PEP 8

PEP 8 とは

PEP 8(ペップ・エイト)は Python のスタイルガイドです(PEP 8 -- Style Guide for Python Code)。日本語版もあります。

主なルール

変数名・関数名はすべて小文字。定数はすべて大文字。例:

MAX = 50
foo = list(range(MAX))

インデントはスペース4個で。例:

for i in range(5):
    print(i)

演算記号の前後、コンマの後に、スペース1個を入れるのが原則。例:

x = sum([1, 2, 3]) + 5

ただし、グルーピングを表すために、スペースなしのほうがいいこともある。例:

z = x*x + y*y

関数の引数の中の = の両側はスペース不要。例:

df = pd.read_csv(URL, encoding="cp932", comment="#")

インポートは最初にまとめて、プログラム本体とは空行で分ける。例:

import matplotlib.pyplot as plt
import numpy as np

rng = np.random.default_rng()
plt.plot(rng.random(100))

クラス名は FooFooBar のように大文字で始める。

補足

このスタイルに合わせるためのツールとして、autopep8flake8black などがあります。

例えば black は pip install black でインストールできます。ターミナルに

black ファイル名

と打ち込むだけで、そのファイルを PEP 8 に合わせて書き直して(上書きして)くれます。Emacs には blacken というパッケージがあり、M-x blacken-buffer で black が掛けられます。

PEP 8 と似たものに Google Python Style Guide があります。両者の違いはニュアンスほどのものです(両者の違いをまとめた @hi-asano さんの記事 参照)が、Google のほうがより具体的なところもあります。例えば Pylint の使用を推奨しています。Pylint は pip install pylint でインストールできます。ターミナルに pylint ファイル名 と打ち込めば、ファイルにおさめた Python コードの問題点を(英語で)注意してくれます。

Python のほうが他の言語よりスタイルガイドに忠実に書かれる傾向があります。そもそも Python は正しくインデントしないと動かないようにデザインされています。PEP 8 のおかげで、C言語の K&R 流と GNU 流のように対立する流儀がありません。そのため、Python を自己流で書くと目立ってしまいます。ソースコードは人間が読むためのものでもあるので、ぜひ PEP 8 に則った書き方をしましょう。

PEP 8 にも Google Python Style Guide にもインデントは4文字分と書かれていますが、Google Colaboratory の自動インデントは2文字がデフォルトです。これを4文字にするには、[ツール]→[設定]→[エディタ]→[インデント幅(スペース)]を4に変更し、[保存]をクリックします。

[追記] blackより高速な Ruff が最近人気のようです。pip install ruffruff format .

参考リンク