Python の命名規則:読みやすいコードは美しいコード
Python は「読みやすさ」を重視した言語です。そのため、コードの書き方、特に「名前」の付け方には一定のルール、つまり「命名規則」が存在します。命名規則を守ることで、自分だけでなく他の人も理解しやすい、保守しやすいコードを書くことができます。ここでは、Python でよく使われる命名規則を、初心者にもわかりやすく解説します。
1. 変数名:スネークケースでわかりやすく
変数は、データを入れる箱のようなものです。変数名は、その箱に入っているデータが何なのかを表すように命名します。Python では、複数の単語をアンダースコア (_
) で繋ぐ「スネークケース」を使用するのが一般的です。
# 正しい例
user_name = "Taro Yamada"
product_price = 1000
# 悪い例(キャメルケースやアッパーキャメルケースは通常使わない)
userName = "Taro Yamada"
ProductName = "Apple"
# 意味のない名前は避ける
x = 10 # 何を表すかわからない
変数名は、できるだけ具体的に、何を表しているのかが一目でわかるようにしましょう。
2. 関数名:動詞から始めるスネークケース
関数は、特定の処理を行うコードの塊です。関数名は、その関数が何をするのかを表すように命名します。変数名と同様に、スネークケースを使用しますが、動詞から始めるのが一般的です。
# 正しい例
def calculate_total_price(price, quantity):
return price * quantity
def get_user_name(user_id):
# ... ユーザー名を取得する処理 ...
return user_name
# 悪い例
def total_price(price, quantity): # 動詞がない
def user_info(user_id): # 名詞っぽい
関数名は、その関数がどのような処理を行うのかを明確に示すようにしましょう。
3. クラス名:アッパーキャメルケース(パスカルケース)
クラスは、オブジェクト指向プログラミングにおける設計図のようなものです。クラス名は、単語の先頭を大文字にする「アッパーキャメルケース」(またはパスカルケース)を使用します。
# 正しい例
class UserProfile:
def __init__(self, name, age):
self.name = name
self.age = age
# 悪い例
class user_profile: # スネークケースは使わない
# ...
クラス名は、そのクラスがどのようなオブジェクトを表しているのかを示すように命名します。
4. 定数:全て大文字のスネークケース
定数は、プログラムの実行中に値が変わらない変数のことです。定数名は、全て大文字のスネークケースで記述します。
# 正しい例
PI = 3.14159
MAX_USERS = 100
# 悪い例
Pi = 3.14159 # 大文字と小文字が混在
max_users = 100 # 全て小文字
定数は、プログラム全体で共通して使用される値を表すために使用します。
5. モジュール名とパッケージ名:短い小文字のスネークケース
モジュールは、Python のコードをまとめたファイルです。パッケージは、モジュールを階層的にまとめたものです。モジュール名とパッケージ名は、短い小文字のスネークケースで記述します。
# 正しい例
# モジュール名: my_module.py
# パッケージ名: my_package/
# 悪い例
# モジュール名: MyModule.py # アッパーキャメルケースは使わない
# パッケージ名: MyPackage/ # アッパーキャメルケースは使わない
モジュール名とパッケージ名は、そのモジュールやパッケージが何を提供しているのかを簡潔に示すように命名します。
命名規則を守るメリット
- 可読性の向上: 誰が見ても理解しやすいコードになります。
- 保守性の向上: コードの修正や機能追加が容易になります。
- チーム開発の効率化: チームメンバー間の認識齟齬を防ぎ、スムーズな連携を促進します。
- Pythonらしいコード: Python コミュニティの慣習に沿ったコードになります。
これらの命名規則は、あくまで推奨であり、強制ではありません。しかし、これらの規則に従うことで、より美しく、読みやすく、保守しやすいコードを書くことができるようになります。最初は少し面倒かもしれませんが、慣れてしまえば自然に守れるようになります。ぜひ、積極的に活用してみてください。
コラム一覧
◯for文
◯関数
◯配列
◯文字列
◯正規表現
◯ファイル入出力
◯openpyxl
◯Numpy
◯Matplotlib
◯Pandas
◯scikit-learn
◯seaborn
◯beautifulsoup
◯tkinter
◯OpenCV
◯pygame
◯メイン関数
◯自作ライブラリ
◯画像処理
◯機械学習
◯スクレイピング
◯データ分析
◯グラフ作成
◯API
◯可読性
◯デバッグ
◯例外処理
◯コメント
◯組み込み関数
◯flask
◯学び方
◯ビット演算
◯マルチスレッドプログラミング
◯参照渡し
◯pyenv
◯エディタ
◯生成AI
◯画像認識
◯Streamlit
◯lambda式
◯物理演算シミュレーション
◯命名規則
◯遺伝的アルゴリズム
◯関数型プログラミング
◯オブジェクト指向
◯ツリー図