PEP8とは
Pythonのソースコードの書き方を定めたコーディング規約です。 世の中には色々なコーディング規約がありますが、PythonではPEP8が最もメジャーな記法です。
PEP8を守るのが面倒…
しかし、初心者にとっては書き方のルールを覚えるのはかなり面倒ですし、覚えたとしても実際にスラスラ書けるかと言うと難しいでしょう。 そこでお薦めなのが、PythonコードをPEP8記法に準拠するように自動的に変換するツール autopep8 です。
インストール
pip install autopep8
使い方
autopep8 [file]
このコマンドで、pep8準拠になります。
元のソースコード
# Long comment aaaaaa aaaaaaa aaa aaaaa a aaaaaaa aaaa aaaa aaaaa aaaa aaaa aaaaaa a aaaaaa aaa aa aaa def long_function_name(var_one,var_two,var_three,var_four,var_five,var_six): print(var_one+var_two+var_three+var_four+var_five+var_six) var_one, var_two, var_three, var_four, var_five, var_six = 1, 2, 3, 4 , 5 , 6 foo = long_function_name( var_one, var_two, var_three, var_four, var_five, var_six)
上記コマンド実行後のソースコード
# Long comment aaaaaa aaaaaaa aaa aaaaa a aaaaaaa aaaa aaaa aaaaa aaaa aaaa aaaaaa a aaaaaa aaa aa aaa def long_function_name(var_one, var_two, var_three, var_four, var_five, var_six): print(var_one+var_two+var_three+var_four+var_five+var_six) var_one, var_two, var_three, var_four, var_five, var_six = 1, 2, 3, 4, 5, 6 foo = long_function_name(var_one, var_two, var_three, var_four, var_five, var_six)
ん?よく見ると、長いコメントが改行されていたかったり、変数を区切るスペースの数がおかしかったりと、まだ不完全な部分が見られます…
実は、
autopep8 --aggressive [file]
というオプションを付けないと、完全なpep8にはなりません。
--aggressiveを付けて実行した結果
# Long comment aaaaaa aaaaaaa aaa aaaaa a aaaaaaa aaaa aaaa aaaaa aaaa # aaaa aaaaaa a aaaaaa aaa aa aaa def long_function_name(var_one, var_two, var_three, var_four, var_five, var_six): print(var_one + var_two + var_three + var_four + var_five + var_six) var_one, var_two, var_three, var_four, var_five, var_six = 1, 2, 3, 4, 5, 6 foo = long_function_name( var_one, var_two, var_three, var_four, var_five, var_six)
これで問題なくpep8にできました!
Vimでautopep8を使ってみる
実は、エディタのVimでautopep8コマンドを実行することができます。
~/.vimrc
に以下を記載してください。
function! Preserve(command) " Save the last search. let search = @/ " Save the current cursor position. let cursor_position = getpos('.') " Save the current window position. normal! H let window_position = getpos('.') call setpos('.', cursor_position) " Execute the command. execute a:command " Restore the last search. let @/ = search " Restore the previous window position. call setpos('.', window_position) normal! zt " Restore the previous cursor position. call setpos('.', cursor_position) endfunction function! Autopep8() call Preserve(':silent %!autopep8 --aggressive -') endfunction " Shift + F で自動修正 autocmd FileType python nnoremap <S-f> :call Autopep8()<CR>
これを保存した上で、vimを起動し、コマンドモード中に Shift + F
を押すとvim上でautopep8が発動します。とても便利です。
以上、Pythonコードを自動でPEP8記法に変換する方法をまとめてみました。良い記事だと思っていただいた方は、以下の「★+」ボタンのクリック、SNSでのシェア、「読者になる」ボタンのクリックをお願いします。