imoniの開発Blog

    Python のコードチェッカーに、Pylint があります。

    コーディングをしていると、いろいろと警告、エラーが出ます。

    最初、意味が分からず調べたりしていましたが、自分のためにも解決方法を まとめておこうと思います。

    ※都度、追記していきます


    目次


    C0103:Invalid constant name "hogeA"

    定数名は大文字で

    hogeA = 0

    というように、モジュール内の定数名に小文字を使用していると、このような警告が出ます。

    HOGE_A = 0

    モジュール内の定数名は大文字にし、単語の区切りにアンダースコア「_」を使います。

    ※モジュール内で変数のつもりで定義しても、Pylint は定数と認識するようです。


    C0103:Invalid function/variable name "hogeB"

    関数、変数名は小文字で

    def testA():
        hogeB = 0

    というように、関数、変数名に大文字を使用していると警告が出ます。

    def test_a():
        hoge_b = 0

    関数、変数名は小文字にし、単語の区切りにアンダースコア「_」を使います。


    C0103:Invalid class name "hoge_a"

    クラス名の先頭は大文字、単語の区切りはアンダースコア「_」ではなく大文字で

    class hoge_a:

    というように、クラス名の先頭が小文字、単語の区切りにアンダースコア「_」を 使用していると、警告が出ます。

    class HogeA:

    クラス名の先頭、単語の区切りを大文字にします。


    C0111:Missing module/class/function docstring

    モジュール、クラス、関数の説明文を書く

    モジュール、クラス、関数の先頭に説明文を書くと、警告が出なくなります。

    説明文は、ダブルクォーテーション3つ「"""」で囲います。

    """テスト用のモジュールです"""
    
    class HOGE:
        """テスト用のクラスです"""
    
        def hoge():
            """テスト用の関数です"""
            return "hoge"

    というように書きます。


    C0200:Consider using enumerate instead of iterating with range and len

    enumerate を使った方が良い

    HOGE = ["a", "b", "c", "d"]
    for i in range(len(HOGE)):
        print(i, HOGE[i])
    

    リストの要素を取得するfor文で、range と len を使うと、このような警告が出ます。

    HOGE = ["a", "b", "c", "d"]
    for (i, x) in enumerate(HOGE):
        print(i, x)
    

    enumerate を使うと、このように書け、警告も出なくなります。


    C0303:Trailing whitespace

    末尾に余計な空白はつけない

    行の末尾に余計なスペースが入っていると、この警告が出ます。

    C0304:Final newline missing

    最後の1行のみ空行で

    ...
        return hoge
    

    または、

    ...
        return hoge
    
    
    

    のように、最後の行に何か書かれているか、空行が2行以上だと、この警告が出ます。

    ...
        return hoge
    
    

    最後の1行のみ空行にすると、警告が出ません。


    C0326:Exactly one space required after assignment

    「=」などの間のスペースは一つだけに

    HOGE      = 1
    HOGE_HOGE = 2
    

    このように、「=」の位置を合わせるような書き方がありますが、Pylint では警告が出ます。

    HOGE = 1
    HOGE_HOGE = 2
    

    スペースを一つにすると、警告が出なくなります。


    E0001:inconsistent use of tabs and spaces in indentation

    インデントは半角スペース4つで

    インデントにタブ文字を使用するとエラーが出ます。

    半角スペース4つにすると、エラーが出なくなります。


    E0001:unindent does not match any outer indentation level

    インデントのレベルが他とあっていない

    インデントがズレているとエラーが出ます。


    E0001:unexpected indent

    などで、このエラーが出るようです。


    コメント

      コメントを投稿する