2013/02/11

Pythonの変数名のつけ方

Pythonの変数名のつけ方に関するルールについてご紹介します。

Pythonの変数の名前(identifier/name)には
  1. a~zのアルファベット
  2. 数字
  3. _(アンダースコア)
の3種類の文字を使うことができます。文字列の長さに関する制限はないため、100字、200字といった極端に長い名前をつけることも可能です(実用性の面で長い名前にすることはないかとは思いますが)。

また、文字が集まった文字列になったときの制約として次の2つがあります。
  • 最初の文字は数字以外
  • 予約語/キーワードと同じ名前はダメ

「最初の文字は数字以外」というのは、たとえば、次の例を見ていただくとわかりよいかと思います。


x
abc
variable
x1
y1
×
1x
2x
123x

「予約語/キーワードと同じ名前はダメ」というのは、「if」や「for」といった、Pythonの文法上特殊な意味をあらかじめ与えられている単語は使うことができない、という意味です。「if」「for」以外にも、Pythonには
  • and
  • as
  • assert
  • break
  • class
  • continue
  • def
  • del
  • elif
  • else
  • except
  • exec
  • finally
  • for
  • from
  • global
  • if
  • import
  • in
  • is
  • lambda
  • not
  • or
  • pass
  • print
  • raise
  • return
  • try
  • while
  • with
  • yield
などの単語が特殊な意味を持ったもの(いわゆる「予約語」「キーワード」)として登録されているため、これらの単語は使わないようにしましょう。このあたりのことについて詳しくは公式ドキュメントの予約語/キーワードの欄をごらんください。

また、
  • _*: アンダースコアひとつで始まる名前
  • __*__: アンダースコアふたつで始まりアンダースコアふたつで終わる名前
  • __*: アンダースコアふたつで始まる名前
などについても、特殊な意味が与えられているので注意が必要です。_(アンダースコア)から始まる名前を不用意に使うことのないようにしましょう。このあたりのことに関する公式ドキュメントの記述箇所はこちらです。

制限としては以上となりますが、あと2点ほど、実際にコードを書く際に気にとめておきたいポイントがあります。

ひとつは、「慣用的に推奨されている名前づけのルールに従う」ということ。たとえば
  • 関数の名前であればlower_case_with_underscoresにする
  • クラス名はCapitalizedWordsにする
といったルールがスタンダードとなっています。このルールを守らなくてもプログラムが走る上では問題はありませんが、読みやすさ、わかりやすさといった意味で規則を設けておくことは効果的です。このあたりのことについては、PEP 8などでも言及されています。

もうひとつは、「デフォルトの関数を上書きしないように気をつける」ということです。Pythonの場合、デフォルトで関数名に使われている名前なんかも、所詮は名前なので、コード内でほかのオブジェクトに割り当ててしまうことが可能です。

たとえば、もとから用意されている関数名として「id」や「type」というものがあって
x = 10

print type(x)  # int
print id(x)  # 10411020
といった形で名前の型やidを確認するために使える便利な関数なのですが、その名前を
type = 'abc'
id = 5
などとしてもインタプリタはそのまま通してしまいます。いったんこう紐付けしてしまうと、そのスコープ内では「type(x)」、「id(x)」というものが使えなくなってしまうので、そのあたりも注意が必要です。

変数名のつけ方に関する公式ドキュメントのパートはこちらです。よろしければこちらもごらんください。


参考
識別子と名前 - Python公式ドキュメント

0 件のコメント: