はじめに
今回は第二回目として、変数を解説します。
YouTube動画
変数とは
Python の変数は、「値を参照するもの」です。
下図の左のイメージではなく、右のイメージが正解です。
変数 a が整数値 10 を保持しているのではなく、整数値 10 を変数 a が指し示しています。
よく、「Python の変数は箱ではなく、ラベルである」と例えられます。
変数が参照しているのは正確に言えば、「値」ではないのですが、詳細は後の回で再度解説します。
具体例を見てみます。
変数 a に整数値 1 を代入します。この時に、変数 a が定義されます。a に 2 を足します。式の結果として、1 + 2 で 3 が返ります。
次に、変数 a に文字列 "neko" を代入します。変数 b に "inu" を代入します。a と空白と b を足すと、文字列 'neko inu' が返ります。
>>> a = 1
>>> a + 2
3
>>> a = "neko"
>>> b = "inu"
>>> a + " " + b
'neko inu'
また、定義していない変数を使用するとエラーになります。
>>> c
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'c' is not defined
変数の型に関して
次に、変数の型に関して見てみます。
型を確認するには、type() 関数を使用します。
a に 1 を代入します。type() 関数を使用して、変数 a の型を調べると int (整数型) が返ります。
a に "neko" を代入します。type() で調べると、str (文字列型) が返ります。
ここで、「型」の情報を持っているのは、「変数」 a ではなく、「値」の方です。つまり、type(a) で調べているのは、変数 a が指し示す値の型を確認している事になります。
>>> a = 1
>>> type(a)
<class 'int'>
>>>
>>> a = "neko"
>>> type(a)
<class 'str'>
変数の命名規則
変数名として以下のものが利用可能です。
- アルファベット (a-z, A-Z)
- 数字 (0-9)
- アンダースコア (_)
- ユニコード文字
以下、公式ドキュメントです。
2.3. 識別子 (identifier) およびキーワード (keyword)
厳密に言えば、アルファベットや数字やアンダースコアもユニコード文字です。
但し、ユニコード文字は、バージョン管理システムなど他のアプリで不具合を起こすケースがありますので、推奨しません。
また、変数名の文字列の長さとして長さ制限はありません。
さらに、以下は変数名として使用出来ません。
- 数字で始まる変数名
- 予約語を変数名とする
具体的に確認します。
以下は、OK です。
a = 1
var1 = 2
num = 3
abcdefghijklmnopqrstuvwxyz0123456789 = 4 # 長い変数名
π = 3.14 # ユニコード文字を含む
文字 = "テスト1" # ユニコード文字を含む
a文字 = "テスト2" # ユニコード文字を含む
以下は、NG です。エラーになります。
1num = 1 # 数字で始まっている
if = 2 # if が予約語
for = 3 # for が予約語
また、以下の変数名を使用してもエラーにはなりませんが、使用が推奨されません。
アンダースコアで始まる変数名は特殊な場合に使用されます。
- アンダースコア 1 つで始まる変数
- アンダースコア 2 つで始まる変数
- ビルトイン関数名 (予め定義されている関数)
_var = 1 # アンダースコア 1 つで始まる
__var = 2 # アンダースコア 2 つで始まる
sum = 3 # sum がビルトイン関数名
id = 4 # id がビルトイン関数名
おわりに
以上、変数のまとめでした。
次回は、具体的な型に関して見ていきます。