コラム

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/ # アッパーキャメルケースは使わない

モジュール名とパッケージ名は、そのモジュールやパッケージが何を提供しているのかを簡潔に示すように命名します。

命名規則を守るメリット

これらの命名規則は、あくまで推奨であり、強制ではありません。しかし、これらの規則に従うことで、より美しく、読みやすく、保守しやすいコードを書くことができるようになります。最初は少し面倒かもしれませんが、慣れてしまえば自然に守れるようになります。ぜひ、積極的に活用してみてください。



< 物理演算シミュレーション
遺伝的アルゴリズム >



コラム一覧

if文
for文
関数
配列
文字列
正規表現
ファイル入出力
openpyxl
Numpy
Matplotlib
Pandas
scikit-learn
seaborn
beautifulsoup
tkinter
OpenCV
pygame
メイン関数
自作ライブラリ
画像処理
機械学習
スクレイピング
データ分析
グラフ作成
API
可読性
デバッグ
例外処理
コメント
組み込み関数
flask
学び方
ビット演算
マルチスレッドプログラミング
参照渡し
pyenv
エディタ
生成AI
画像認識
Streamlit
lambda式
物理演算シミュレーション
命名規則
遺伝的アルゴリズム
関数型プログラミング
オブジェクト指向
ツリー図