Pythonで識別子として有効な変数名、関数名、クラス名の付け方やベストプラクティスを解説

スポンサーリンク

本記事では、Pythonの識別子について解説していきます。

識別子とは、変数名とか関数名とかクラス名等の名前が付いたもののことです。

スポンサーリンク

Pythonの変数名、関数名、クラス名の付け方

他言語と同様に、Pythonの識別子を付けるには、いくつかのルールがあります。

  • 予約語(ifとかwhileとか)は識別子名として使用できません。
  • 小文字(a-z)、大文字(A-Z)、数字(0-9)、アンダースコア( _ )が使用できます。
  • 識別子名は、数字から始めることができません。
  • 数字だけを含むことはできません。
  • アンダースコア(_)で始めることができます。
  • 識別子の名前の長さに制限はありません。
  • 大文字と小文字を区別します。

説明だけでは分かりにくいので、以下は良い例と悪い例を見ていきます。

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
タイトルとURLをコピーしました