結論:
PEP 8 の命名規則は「誰が見ても同じ意図を理解できる」ことを目的としています。
snake_case / CamelCase / ALL_CAPS を使い分けるのが基本ルールです。
命名規則の全体像
対象 | 規則 | 例 |
---|---|---|
変数・関数 | snake_case(小文字+アンダースコア) | user_name , get_data() |
クラス | CamelCase(単語の先頭を大文字に) | UserProfile , DataLoader |
定数 | ALL_CAPS(大文字+アンダースコア) | MAX_RETRY , DEFAULT_PORT |
モジュール・パッケージ | 小文字+アンダースコア | data_utils.py , my_package |
プライベート変数 | 先頭にアンダースコア | _hidden_value |
変数・関数名(snake_case)
#良い例
user_name = "Taro"
def get_user_info(user_id: int) -> dict:
return {"id": user_id, "name": "Taro"}
#悪い例(CamelCaseは関数や変数には使わない)
def GetUserInfo(UserID):
return {"Id": UserID}
クラス名(CamelCase)
# 良い例
class UserProfile:
def __init__(self, name: str):
self.name = name
# 悪い例(snake_caseはクラス名に使わない)
class user_profile:
...
定数(ALL_CAPS)
# 良い例
MAX_CONNECTIONS = 10
DEFAULT_TIMEOUT = 5
# 悪い例(小文字やCamelCaseは不可)
maxConnections = 10
特殊な命名
- プライベート変数:先頭にアンダースコアを付ける(例
_internal_var
) - 特殊メソッド:両端にダブルアンダースコア(例
__init__
,__str__
) - エイリアス:インポート時に短縮するのはOK
import numpy as np
よくある初心者の間違い
- 関数名にCamelCaseを使う
→ JavaやC#の慣習に引きずられる - 変数を1文字で書く
→x, y
は数学以外では避ける - 定数を小文字で書く
→ 意図が伝わらない
実務でのポイント
- 自動補完が効くエディタを活用して命名をミスしにくくする
- 一貫性を最優先:チーム全員が同じルールに従うことが大事
- コメントより命名:コメントを書くより、わかりやすい名前を付ける方が有効
まとめ
- 変数・関数 →
snake_case
- クラス →
CamelCase
- 定数 →
ALL_CAPS
- Pythonの命名は「意味が伝わること」と「一貫性」が最重要