PEP 8 最速理解ガイド:これだけは押さえておきたい10のルール
はじめに
定年退職後の備忘録としてまとめたものです。
Pythonのコードを読みやすく、チーム開発で統一感を出すために不可欠なのが、**PEP 8(スタイルガイド)**です。すべてを覚える必要はありませんが、主要なルールを知っているだけで、あなたの書くコードは格段に美しくなります。本記事では、特に重要な10個のルールを、良い例と悪い例を比較しながら簡潔にまとめます。
1. インデントはスペース4つ
最も基本的なルールです。タブではなく、スペース4つでインデントします。
-
悪い例
def my_function(): print("Hello")
-
良い例
def my_function(): print("Hello")
2. 1行の文字数は79文字以内
コードが横に長くなりすぎないようにします。読みやすさの確保が目的です。
-
悪い例
long_variable_name = "This is a very long string that goes on and on and on and on and on and on and on and on..."
-
良い例
long_variable_name = ( "This is a very long string that goes on and on and on and on and on and on and on and on..." )
3. 空行で区切る
関数やクラスの定義の間に空行を入れることで、コードのセクションを明確にします。
-
悪い例
def func1(): pass def func2(): pass
-
良い例
def func1(): pass def func2(): pass
4. 演算子の周りには空白を
=
, +
, -
などの演算子の両側にスペースを1つ入れます。
-
悪い例
x=1+2*3
-
良い例
x = 1 + 2 * 3
5. 命名規則を守る
-
関数、変数:
snake_case
(すべて小文字、単語間をアンダースコアで繋ぐ) -
クラス:
CamelCase
(各単語の先頭を大文字にする) -
定数:
UPPER_CASE_SNAKE_CASE
(すべて大文字、単語間をアンダースコアで繋ぐ) -
悪い例
MyVariable = 10 def myfunction(): pass
-
良い例
my_variable = 10 def my_function(): pass class MyClass: pass MY_CONSTANT = 3.14
6. import
文の順序
標準ライブラリ → サードパーティライブラリ → 自作モジュールの順に記述し、それぞれ空行で区切ります。
-
悪い例
import os import requests from my_project import utils
-
良い例
import os import requests from my_project import utils
7. 末尾のカンマ
リストや辞書の要素が複数行にわたる場合、最後の要素にもカンマを付けるのが推奨されます。バージョン管理システムで差分(diff
)が見やすくなります。
-
悪い例
names = [ "Alice", "Bob" ]
-
良い例
names = [ "Alice", "Bob", ]
8. リスト・タプルのインデックスの周りは空白なし
-
悪い例
my_list [1]
-
良い例
my_list[1]
9. ドキュメンテーション文字列(Docstrings)
関数やクラスの説明は、三重引用符("""
または'''
)で記述します。
-
良い例
def calculate_sum(a, b): """2つの数値を足し合わせる関数。""" return a + b
10. if __name__ == "__main__":
スクリプトが直接実行されたときのみ動くコードブロックを定義します。
-
良い例
def main(): print("This is the main function.") if __name__ == "__main__": main()
PEP 257: Docstringの書き方
PEP 257は、ドキュメンテーション文字列(Docstring)のスタイルガイドです。PEP 8がコード全体のフォーマットを規定するのに対し、PEP 257はコードの説明文をどのように書くべきかを定めています。Docstringは、関数、クラス、モジュール、メソッドの直後に記述され、help()
関数やドキュメント生成ツールによって読み込まれます。
-
一行ドキュメンテーション文字列: 簡潔な説明で済む場合に使います。
def get_user_name(): """ユーザーの名前を返す。""" ...
-
複数行ドキュメンテーション文字列: より詳細な説明が必要な場合に使います。一行目に要約、二行目以降に詳細を記述します。引数や戻り値も記述することが推奨されています。
def calculate_area(radius): """ 円の面積を計算する。 引数: radius (float): 円の半径。 戻り値: float: 計算された円の面積。 """ return 3.14 * radius * radius
まとめ
PEP 8のルールをすべて暗記する必要はありません。
まずは「インデントはスペース4つ」「命名規則」「空白の入れ方」の3つから実践してみましょう。これらのルールは、Pythonコードをよりプロフェッショナルで、チームメンバーにとって読みやすいものに変えるための第一歩です。
flake8
やblack
のような自動整形ツールを活用するのもおすすめです。