Pythonの変数名って命名規則はあるの?なぜかエラーが起きるんだけど。
こんな悩みを解決する記事を書きました。
こんにちは、学生フリーランスエンジニアのいのうえ(@inouelog)です!
Pythonの変数名はどんな名前にしても良いというわけではなく、大まかに3つの命名規則があります。決して複雑な規則ではないので、本記事で解説する規則を抑えればOKです。
Pythonの変数名の命名規則
- アルファベット、数字、アンダースコア( _ )だけ使うことが出来る
- 最初の文字は、アルファベットまたは、アンダースコア( _ )にする
- アルファベットの大文字と小文字は区別する
最後に例外を紹介しますが、基本的には上記3つだけです。
アルファベット、数字、アンダースコア( _ )だけ使うことが出来る
Pythonの変数名で使うことが出来るのは、
- アルファベット(a ~ z, A ~ Z)
- 数字(0 ~ 9)
- アンダースコア( _ )
だけです。
$ や % などの記号は使うことが出来ないので注意しましょう。
インタラクティブシェルで試してみます。
>>> a = 1
>>> print(a)
1
>>> $a = 1
File "<stdin>", line 1
$a = 1
^
SyntaxError: invalid syntax
PHPなどを既に学んでいる人は、癖で”$”を付けないようにしましょう。
アルファベットと数字とアンダースコアを使って変数名を命名すると、例えば次のようになります。
>>> a_0_b_1 = 10
>>> print(a_0_b_1)
10
最初の文字は、アルファベットまたは、アンダースコア( _ )にする
数字は使うことは出来ますが、最初の文字に使うことは出来ません。必ず、アルファベットまたは、アンダースコアを使いましょう。
>>> a_1 = 100
>>> print(a_1)
100
>>> _a1 = 200
>>> print(_a1)
200
>>> 1_a = 300
File "<stdin>", line 1
1_a = 300
^
SyntaxError: invalid decimal literal
アルファベットの大文字と小文字は区別する
例えば、アルファベットのaとAは区別されます。区別せず変数を定義したものとして、実行すると次のようにエラーが起きます。
>>> a = 1000
>>> b = A + 1000
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'A' is not defined
【予約語】Pythonの変数名に使えない名前
ここまで紹介した3つ以外に例外で「予約語は使えない」という規則があります。
予約語とは一言で言うと、「Pythonで重要なキーワード」です。変数名が重要なキーワードと被ると都合が悪いので、予約語と同じ名前の変数名は使うことが出来ません。
予約語の一覧を確かめてみます。
>>> import keyword
>>> print(keyword.kwlist)
['False', 'None', 'True', '__peg_parser__', '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']
このずらっと表示された単語が予約語です。
試しに’and’を変数名として定義しようとしてみます。
>>> and = 1
File "<stdin>", line 1
and = 1
^
SyntaxError: invalid syntax
このように基本の3つの命名規則は守っているのに、予約語であるためにエラーが起きます。
Pythonの変数名の命名規則 まとめ
ここまでPythonの変数名の命名規則を紹介しましたが、数が少なく単純なものばかりでした。
実際、開発するときにエラーが起きることは少ないと思いますが、もしエラーが起きたら確認してみてください。
以上、『Pythonの変数名の命名規則を解説します【3つだけ】』でした。