Python:変数名のつけ方

Python
スポンサーリンク
スポンサーリンク

Pythonで変数名に使うのがベストな文字

結論から申しますと、Pythonでは以下の文字を変数名に使うのがベストです。

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_

基本は半角文字英文字azAZ数字09、記号は「_」のアンダースコア(アンダーバー)1種類のみの全63文字

実際は、全角文字もPythonでは変数名として使えるのですが、出来るなら使わない方がいいです。その理由は後述します。

Pythonで変数名をつける際のルール

ではこの63文字の文字を使えばどんな変数名でもOKか?というとそうではありません。
変数名のつけ方にはルールがあります。(ちなみにC言語を学んだ方は、本項を読み飛ばして構いません。変数名のつけ方に関してはC言語もPythonも同じルールですので)

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_

1文字目は英文字またはアンダースコア

先頭文字は、必ずアルファベットまたはアンダースコアでなければなりません。
先頭に数字は使えません

先頭文字に使える文字:azAZ_

2文字目以降は、英数字、またはアンダースコア

2文字目以降は、数字も使えるようになります。要するに63文字全て使えます。

2文字目以降に使える文字:azAZ09_

ただし予約後は変数名に使えない

予約語は、もともとPythonで宣言されているTrue Falseifforなどの構文に使われるキーワードと呼ばれるものを指します。

以下はPythonで予約語と定義されている為、変数名に使えません。(Python3.8.3で確認)

False None True and as assert async await break class continue def del elif else except finally for from global if import in is lambda nonlocal not or pass raise return try while with yield

変数名の例

Pythonの変数名を実際の例で示します。

以下は変数名としてOKです

i, a, gokei, ABC, aBc, _name, t1, _7, print, _if ….

ちなみに上記例にあるprintなどの関数やアンダースコア2つ連続__も変数名としてOKです。ただし、print = 10などと代入するとその後print関数は使えなくなります。

以下はNGです。

1a, for, if, True, False, _*, kosu+, /ABC …

ただ、プログラミングの際は後で見たとき何の目的で使った変数なのか分かるような変数名が一番いいと思います。

a = 500
b = 3
c = a * b
print("合計" + str(c) + "円")

tanka = 500
kosu = 3
gokei = tanka * kosu
print("合計" + str(gokei) + "円")

Pythonで変数名に使える文字

他のプログラミング言語に比べるとPythonの変数名は許容範囲が広いです。

例として挙げるとC言語の場合、変数名には先ほど挙げた以下の文字しか使えません。

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_

プログラミング言語は四則演算などの演算子として*/+-などの記号を使う為、こうした記号も変数名としては利用できません。同様に全角文字なども使えません

例として挙げると、

単価 = 1000

などはC言語だとエラーとなります。漢字の「単価」は全角文字の為、変数として利用出来ないからです。

ところが、Pythonでは日本語の全角文字も変数名として利用出来ます。(全てではありませんが)ですから、次のようなプログラムも普通に動いてしまいます。

単価 = 1000
個数 = 5
合計 = 単価 * 個数
print("合計は、" + str(合計) + "円です")

日本人であれば、見た目として分かりやすいプログラムが作成出来る反面、海外の人が見た際や、ネットに公開した時などは問題が出てきます。日本語のフォントが他人の環境で利用できるとは限らないからです。安全面からすれば、(仕事で利用する場合は特に)半角の英数字を基本とする変数名の利用がいいでしょう。ただ、プログラミング勉強にPythonを利用しているなら、そこまで気を使わなくてもいいと思います。

変数名のつけ方に関しては詳しくは、Pythonの公式ドキュメント字句解析項目の《2.3. 識別子 (identifier) およびキーワード (keyword)》に記述されています。(たぶん見ると読みたく無くなります!)

以上、Python変数名のつけ方でした。

コメント

  1. toyosuke より:

    どうも、ご無沙汰しています。
    たまたま見つけたので来てしまいました。

    昔はどうだったか分かりませんが、今はprintは予約語ではありません。
    Python2→Python3になった時にprint文ではなくprint関数になったためその時だと思いますが。
    現在のバージョン(3.8)で確認しましたが、

    print = 10

    こんな変数定義ができてしまいます。
    (もちろん後述の理由があるのでそんなことするなとは言いたいですが)

    Pythonの変数名の落とし穴もありますよね。
    例えば↑みたいに関数と同名の変数を定義した場合、

    print = 10
    print(20) # print関数を呼びたい

    というのがエラーになってしまいます。
    変数の宣言によってPython側の認識が「printは10という整数」となってしまうためです。
    「print」変数の宣言はさすがに聞かないですが、「list」という変数を定義してlist関数が使えなくなる人がいるようです(自分もハマりました)

    これだけ語ってますが、実業務ではまだPython使ったことないです。
    未だ趣味の言語。

    • dennou より:

      管理人です。
      確かにご指摘頂いたprintやstrなどの関数として定義されている名前は変数名として代入可能でした。
      予約語の部分の記事を修正しました。大変勉強になりました。ありがとうございました。今後もよろしくお願い致します!