本記事では、Pythonの識別子について解説していきます。
識別子とは、変数名とか関数名とかクラス名等の名前が付いたもののことです。
Pythonの変数名、関数名、クラス名の付け方
他言語と同様に、Pythonの識別子を付けるには、いくつかのルールがあります。
- 予約語(ifとかwhileとか)は識別子名として使用できません。
- 小文字(a-z)、大文字(A-Z)、数字(0-9)、アンダースコア( _ )が使用できます。
- 識別子名は、数字から始めることができません。
- 数字だけを含むことはできません。
- アンダースコア(_)で始めることができます。
- 識別子の名前の長さに制限はありません。
- 大文字と小文字を区別します。
説明だけでは分かりにくいので、以下は良い例と悪い例を見ていきます。
この記事もチェック:Pythonのbool関数の使い方|数字、文字列、クラスでの使い方を解説する
Pythonで有効な識別子の使い方
まずは良い例から。
- ab10c : 英字と数字のみを含む。
- abc_DE : 有効なすべての文字を含む。
- _tanaka : アンダースコアから始まっている。
Pythonで無効な識別子の使い方
- 99 : 識別子に数字のみを使用することはできません。
- 9abc : 識別子は数字で始めることはできません。
- x+y : プラス等の記号はダメです。アンダースコアのみ有効
-
for : 予約キーワードです。
文字列が有効な識別子かどうかをコードで区別する方法
isidentifier()
関数を使用して、識別子名が有効かどうかをチェックすることができます。
しかし、isidentifier()
関数だけでは予約されたキーワードを考慮した判定をしてくれません。
そこで、keyword.iskeyword()
を併用することで、その名前が有効かどうかをチェックすることができます。
例えば、以下の例を見てみましょう。
print("abc".isidentifier()) # True
print("99a".isidentifier()) # False
print("_".isidentifier()) # True
print("for".isidentifier()) # True - ただしforは予約語なので、Trueは好ましい挙動ではない
for “は予約語なので、"for".isidentifier()
はTrueと判定されるのは、期待する挙動ではありません。
"for".isidentifier()
を期待する挙動にするためには、以下のコードの様にkeyword.iskeyword()
を併用して使うと良いです。
def is_valid_identifier(s):
returns.isidentifier() and not keyword.iskeyword(s)
print(is_valid_identifier("for")) # False
Python識別子の命名のベストプラクティス
以下は、Pythonの識別子(変数名や関数名、クラス名)の命名する時のベストプラクティスを書いていきます。
Pythonのクラス名の命名規約
- クラス名は大文字で始めるのが良い。
class Person:
,class Employee:
- クラス名が複数の単語からなる場合は、それぞれの単語の最初の文字葉大文字にします。
class EmployeeData:
- 変数名、関数名、モジュール名は小文字を使う。
collections
,foo()
- 変数名、関数名、モジュール名に単語は、アンダースコアで区切る。
is_empty()
,employee_object
- 関数が真偽値を返す場合は、名前を “is” で始める野のが良い。
isidentifier
,iskeyword