有効なPython識別子とは?命名ルールとアンダースコアの使い方を解説
Pythonにおける識別子とは
Pythonプログラムにおける識別子(identifier)とは、変数、関数、クラス、モジュール、パッケージなど、プログラム内のさまざまな要素に付ける名前のことです。識別子はコードの可読性や保守性に直結するため、正しいルールと慣習を理解しておくことが重要です。
有効な識別子の基本ルール
Pythonで有効な識別子を作成するには、以下のルールに従う必要があります。
- 識別子は英字(大文字・小文字いずれか)またはアンダースコア(_)で始める必要があります。
- 先頭以降は、英数字やアンダースコアを1文字以上続けることができます。
- 数字で始まる識別子は無効です(例:
1variableは不可)。 - 記号(
@、$、%など)は使用できません。 - Pythonは大文字・小文字を区別するため、
nameとNameは別の識別子として扱われます。
なお、Python 3ではUnicode文字も識別子として使用できるため、日本語などの非ASCII文字を使った変数名も技術的には可能ですが、一般的には英語の識別子を使うことが推奨されています。
キーワード(予約語)は識別子として使えない
キーワード(keyword)はPython言語側であらかじめ定義された予約語であり、すべて小文字で構成されています。例えば if、else、for、while、def、class などが該当します。これらは言語の構文として特別な意味を持つため、変数名や関数名など他の目的には使用できません。
現在のキーワード一覧は、以下のように確認できます。
>>> import keyword
>>> print(keyword.kwlist)命名に関する一般的な慣習(PEP 8)
Pythonには文法上のルール以外に、公式スタイルガイド「PEP 8」で推奨される命名慣習があります。これに従うことで、チーム開発でも読みやすいコードになります。
クラス名は大文字で始める
慣習として、クラス名は大文字の英字で始めます(キャメルケース/パスカルケース)。一方、関数名や変数名、モジュール名は小文字の英字で始めるのが一般的です。
class MyClass:
pass先頭にアンダースコア1つ:内部利用を示す
変数名や関数名の先頭にアンダースコアを1つ付けた場合(例:_count)、それはモジュールやクラスの外部から直接アクセスすべきではない「内部的な(private相当の)」要素であることを示す合図です。これはあくまで慣習であり、言語レベルでの強制力はありませんが、Pythonコミュニティでは広く守られています。
先頭にアンダースコア2つ:強いプライベート(名前マングリング)
先頭にアンダースコアを2つ付けた場合(例:__secret)、その属性は「強くプライベート」であることを意味します。この場合、Pythonは名前マングリング(name mangling)という仕組みによって、クラス外部からのアクセス時に名前が自動的に書き換えられるため、意図しないアクセスやサブクラスでの名前衝突を防げます。
前後にアンダースコア2つ:特殊メソッド(ダンダー)
先頭と末尾の両方にアンダースコアを2つずつ付けた名前(例:__init__、__add__)は、Python言語自体が特別な用途のために予約しているものです。これらは「ダンダー(dunder:double underscore)メソッド」や「マジックメソッド」と呼ばれ、オブジェクトの初期化や演算子のオーバーロードなど、言語の動作をカスタマイズするために使われます。
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Point(self.x + other.x, self.y + other.y)自分で新しい識別子を定義する際は、この形式の名前を独自に作成しないように注意しましょう。
まとめ
有効なPython識別子は「英字またはアンダースコアで始まり、以降は英数字とアンダースコアのみで構成される名前」です。加えて、キーワードとの重複を避け、PEP 8の命名慣習(クラス名は大文字開始、アンダースコアによる可視性の表現など)に従うことで、より読みやすく保守しやすいPythonicなコードを書くことができます。
-
Pythonの関数名・識別子に使用できる文字とは?命名ルールを徹底解説
Pythonにおける識別子(Identifier)とは? Pythonにおいて、クラス名、関数名、変数名など、プログラム内のさまざまな要素に付ける名前のことを識別子(identifier)と呼びます。識別子は、それぞれの要素を他と区別するために欠かせないものです。 この記事では、関数名や変数名としてどのような文字が許可されているのか、そのルールと注意点を具体例とともに解説します。 識別子に使用できる文字のルール Pythonの識別子には、以下の文字を組み合わせて使用できます。 英字の小文字(a〜z) 英字の大文字(A〜Z) 数字(0〜9) アンダースコア(_) たとえば myClass、
-
Pythonの関数属性とは?getattr・setattrを使った属性の設定と取得方法を解説
Pythonでは「すべてがオブジェクト」という設計思想のもと、ほぼすべてのデータに属性やメソッドが備わっています。実は関数もオブジェクトであり、他のオブジェクトと同じように属性(アトリビュート)を持つことができます。すべての関数には、組み込み属性として __doc__ が用意されています。これは関数のソースコード内に定義されたドキュメント文字列(docstring)を返す属性です。さらに、Pythonでは既存の属性を参照するだけでなく、関数に対して新しい属性を自由に追加し、後からその値を取得することも可能です。属性を操作するための組み込み関数:getattr と setattr属性の扱いには、