TL;DR
Python を洗練していくためにPEP という拡張提案の仕組みがあります。この中に、コードを綺麗に書くためのPEP 8という Python のコーディング規約があります。
今回は、Python のコーディング規約である PEP8 について、使用頻度が高く初心者の方が特に抑えておくべきルールをチェックしてみましょう。
コーディング規約
PEP8 は標準ライブラリのコーディング規約であり、多くの Python のプロジェクトが PEP 8 に沿って書かれています。PEP 8 によると、コードは書かれるより読まれることが多く、可読性を高める必要があるので、一貫性を重視するとのことです。
これらのことから、コーディングする時は、PEP8 の規約から外れないように理解する必要があります。
コーディング規約に従って書くと、可読性が高くなります。
# インデント幅は4つ
class Menu:
def info(self):
print(self.name)
x = Menu()
x.name = 'hello'
x.info()
# ネスト
n = [1,2,3,4,5]
for hoge in n:
print(hoge)
if hoge == 3:
break
# 開き括弧に揃える
foo = long_function_name(var_one, var_two,
var_three, var_four)
# 引数とそれ以外を区別するため、スペースを4つ(インデントをさらに)加える
def long_function_name(
var_one, var_two, var_three,
var_four):
print(var_one)
# list
my_list = [
1, 2, 3,
4, 5, 6,
]
規約の中で、気になった箇所をざっくりとまとめます。
- スペースが好ましい(タブよりスペース推奨)
- インデントにタブをスペースを混ぜてはいけない
- インデントはスペース 4 つ(エディタのインデント幅も 4 に変更しましょう)
- 演算子の前後はスペース 1 つ
- 括弧やブラケットの前後に空白を入れない(foo(a[1], {b: 2}))
- 行の長さは最大 79 文字(こちらもエディタで設定可能ですので変更しましょう)
- コメントや docstring については 72 文字で折り返す
- import 文は行を分ける(from ... import は同じ行に書いて OK)
- 行末に余計な空白文字を残さない
- 折り返された要素を縦に揃える
- インラインコメントは控えめに
- switch 文はない
命名規則
- 実装よりも使い方を反映した名前にすべき
- I、O は使わない。数字と区別がつかないから
- モジュールの名前は小文字にする
- クラス名は CapWords 方式(AbcDefg)
- 型変数の名前は、最初が大文字で短く(Num)
- 関数の名前は小文字のみ
- インスタンスメソッドのはじめの引数の名前は self
- クラスメソッドのはじめの引数の名前は cls
- 変数は小文字、定数は大文字
自動コードレビュー
Python の文法チェックツールである flake 8 を活用しましょう。
インストール
pip install flake8
使い方は、ファイル名を指定するだけです。
※ 2023/02/02 コメントにてご指摘がありましたので、修正いたしました。
// fleak8 test.py 間違い
flake8 test.py