Python命名規則(PEP 8):決定版リファレンス

6 分で読了

PEP 8はPythonの公式スタイルガイドであり、その命名規則は事実上すべてのPythonプロジェクトで従われています。このガイドでは知っておくべきすべてのルールをカバーします。

PEP 8が重要な理由

Pythonは可読性を重視しています。PEP 8は異なる開発者が書いたコードの見た目と雰囲気を統一します。flake8pylintruffなどのリンターがこれらの規則を自動的に適用します。

変数と関数名: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.pydata_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、短くTKTVT

よくある間違い

  • 関数に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開発者にとって自然に感じられます。