このサイトについて

Pythonのコーディングスタイル(PEP8)をコマンドでチェック

Pythonのコーディングスタイル(PEP8)をコマンドでチェック

PythonにはPEP8という公式のコーディングスタイルがあります。このスタイルに従うことで,Pythonの思想「誰にとっても明確な手法が,一つだけあることが好ましい(There should be one-- and preferably only one -- obvious way to do it)」に沿った,見やすいコードを書くことが出来ます。

読んでみると分かるのですが,変数や関数,クラスなどの命名規則から,どこに空白を入れろとか改行を入れろとか,かなり細かく記述があります。それぞれの規則にはちゃんと理由があって,出来る限り守った方がコードが見やすくなるのは確かなのですが,全部を覚えるのは大変です。

ソースコードがPEP8通りに書かれているか,チェックするツールがあります。そのものずばりの名前「pep8」 というツールです。

このコマンドにPythonのソースを与えると,PEP8から外れた部分を指摘してくれます。

「$easy_install pep8」でインストールして,早速使って見ましょう。手元にある100行ほどの短いソースをチェックしてみます。

    $ pep8 moblog.py 
    moblog.py:15:1: W291 trailing whitespace
    moblog.py:22:29: E231 missing whitespace after ','
    moblog.py:39:1: E302 expected 2 blank lines, found 1
    moblog.py:70:32: E225 missing whitespace around operator
    moblog.py:73:73: E202 whitespace before '}'

かなり前に書いたスクリプトだからか,結構出ますね。

オプションを加えると,該当行のソースと場所を表示してくれます。

    $ pep8 --show-source moblog.py 
    moblog.py:15:1: W291 trailing whitespace
    
    ^
    moblog.py:22:29: E231 missing whitespace after ','
        subj = unicode(subj_l[0],enc).encode('utf-8')
                            ^
    moblog.py:39:1: E302 expected 2 blank lines, found 1
    def add_moblog_entry(msgbody,blogbase,passwd):
    ^
    moblog.py:70:32: E225 missing whitespace around operator
            urllib.urlopen(blogbase+'images/invokeFactory',dt)
                                   ^
    moblog.py:73:73: E202 whitespace before '}'
                                   'filedata':str(img.get_payload(decode=1)) })

細かな規則を,文章を読んで覚えるより,コードを書きながら実践的にPEP8の規則を学んだ方がよいかもしれません。

2010-08-27 04:53