Python命名規則(PEP 8):決定版リファレンス
6 分で読了
PEP 8はPythonの公式スタイルガイドであり、その命名規則は事実上すべてのPythonプロジェクトで従われています。このガイドでは知っておくべきすべてのルールをカバーします。
PEP 8が重要な理由
Pythonは可読性を重視しています。PEP 8は異なる開発者が書いたコードの見た目と雰囲気を統一します。flake8、pylint、ruffなどのリンターがこれらの規則を自動的に適用します。
変数と関数名:snake_case
すべての変数と関数は小文字とアンダースコアを使用します:
user_name = "Alice"
total_price = 99.95
def get_user_by_id(user_id):
pass
def calculate_total_price(items):
pass
Python関数にcamelCaseを使わないでください。getUserByIdと書くと即座に非Pythonicだと分かります。
クラス名:PascalCase
クラスはCapWords(PascalCase)を使用します:
class UserAccount:
pass
class HttpRequestHandler:
pass
定数:SCREAMING_SNAKE_CASE
モジュールレベルの定数は大文字とアンダースコアを使用します:
MAX_RETRY_COUNT = 3
API_BASE_URL = "https://api.example.com"
DEFAULT_TIMEOUT = 30
モジュールとパッケージ名
モジュール(ファイル)は短く、すべて小文字、必要に応じてアンダースコア:utils.py、data_loader.py。パッケージ(ディレクトリ)は短く、すべて小文字、アンダースコアなし:mypackage。
メソッド名とインスタンス変数
関数と同じくsnake_case。非公開メソッドには先頭にアンダースコア1つ:
class User:
def __init__(self, name):
self.user_name = name
self._internal_id = generate_id()
def get_display_name(self):
return self.user_name
def _validate(self):
pass
特殊なケース
| パターン | 規則 | 例 |
|---|---|---|
| プライベート属性 | _先頭アンダースコア1つ | _internal_cache |
| 名前マングリング | __先頭アンダースコア2つ | __private_method |
| マジック/ダンダー | __両側アンダースコア2つ__ | __init__、__str__ |
| 使い捨て変数 | アンダースコア1つ | for _ in range(10) |
| 型変数 | PascalCase、短く | T、KT、VT |
よくある間違い
- 関数にcamelCaseを使う(
get_user_nameでなくgetUserName) - クラス名に小文字を使う(
UserAccountでなくuser_account) - 通常の変数にALL_CAPSを使う
- ループや内包表記以外で1文字変数名を使う
コードを素早く変換
JavaScriptやJavaから移行する場合は、snake_caseコンバーターでcamelCase識別子を素早く変換できます。クラス名にはPascalCaseコンバーターをお試しください。ケース変換ハブですべての形式を一度に比較できます。
まとめ
PEP 8の命名はシンプルです:ほぼすべてにsnake_case、クラスにPascalCase、定数にSCREAMING_SNAKE。これらのルールに従えば、あなたのPythonコードはすべてのPython開発者にとって自然に感じられます。