Pythonプログラミングを学ぶ上で最初のハードルがPython実行環境の設定だとすると、2つ目のハードルは変数(へんすう)です。ここでは変数の定義と変数名の付け方について解説します。
変数とは?
変数とは、値(数値や文字列など)の格納場所(メモリの記憶領域)と紐づけた参照用の識別子(名前)です。
紐づけについては、パソコンで使うフォルダのショートカットをイメージするとわかりやすいかもしれません。ショートカット自体はフォルダではありませんが使用するとフォルダが開いて中を参照することができます。
Pythonの変数も値の格納場所に紐づけられており変数を使用することで格納されている値を参照することができます。
変数の定義と代入
変数の定義というと難しそうですが、簡単に言うと変数の作り方です。そして変数への代入とは変数と値の格納場所を紐づけることです。
左辺 = 右辺
上記のように左辺と右辺の間に「=」(イコール)を入れます。左辺側が変数名となり右辺側が値になります。
変数名 = 値
値は数値や文字列などです。
右辺側が必ず先に実行されます。
変数の定義例
a = 5
変数への代入例
a = 5
おや? 「変数の定義例」と「変数への代入例」が全く同じですね。実は変数の定義をする際には必ず値を代入しないと変数を作ることができません。ですから変数の定義は変数への代入と同じです。
「=」(イコール)のことを代入演算子と呼びます。
空の変数の作り方
変数を定義する際に必ず値を代入するなら、空の変数はどう作ればよいのでしょうか。次のようにすると値が何も存在しないという情報を代入できます。
a = None
プログラム(ソースコード)
次のプログラムに出てくる「id()」はプログラムを実行した際に変数や値などに付けられるid(識別値)を取得することができます。
printで値や変数のidを表示して値と変数の関係を確認します。
# 数値「5」を表示する
print("数値", 5)
# 数値「5」のidを表示する
print("数値のid", id(5))
# 変数「a」を定義する(変数「a」に数値「5」を代入する)
a = 5
# 変数「a」の値を表示する
print("変数aの値", a)
# 変数「a」のidを表示する
print("変数aのid", id(a))
# 変数「b」を定義する(変数「b」に「2 + 3」の計算結果を代入する)
b = 2 + 3 # 右辺側が必ず先に実行される
# 変数「b」の値を表示する
print("変数bの値", b)
# 変数「b」のidを表示する
print("変数bのid", id(b))
# 変数「c」を定義する(変数「c」に「None」を代入する)
c = None
# 変数「c」の値を表示する
print("変数cの値", c)
プログラム(ソースコード)の保存先
- 保存先(venv仮想環境):C:\code\py310\venv\trial
- ファイル名:sample_code_007.py
- エンコード:UTF-8
コマンドプロンプトでPythonのプログラム(ソースコード)を実行
下記の実行結果を見てください。
ここで注目してほしいのは、数値5のidと変数a、変数bのidが同じだということです。値5を代入した変数aは値5と同じidになり、計算結果の値が5になる変数bも値5と同じidになっています。
つまり、変数は値と紐づけられている、ということがわかります。
(trial) C:\code\py310\venv\trial>python sample_code_007.py
数値 5
数値のid 2247766376816
変数aの値 5
変数aのid 2247766376816
変数bの値 5
変数bのid 2247766376816
変数cの値 None
(trial) C:\code\py310\venv\trial>
「id()」で表示した数字(識別値)はプログラムを実行するたびに変わるため上記の例とは数字が異なります。
Noneを代入した変数cを表示するとNoneと表示されました。しかし、これは文字列ではなく値が存在しない「NoneType」という別の種類の値となります。
変数名の付け方
変数名として使える文字と使えない文字があります。また、変数名として使える文字だが避けた方が良い使い方があります。
変数名に使える文字
- 半角英字(小文字のみ)
- 半角数字
- 半角記号のアンダースコア(アンダーバー)のみ
変数名に使えない文字
- 半角英字の大文字は使わない
半角英字の大文字も変数名に使えるのですが、半角英字の大文字は慣例として定数に使用されるため、使うことは避けた方が良いでしょう。
- 半角数字は1文字目に使えない
半角数字は変数名に使えるのですが、変数名の先頭(1文字目)に数字を使用することはできません。
- アンダースコアは1文字目に使わない
半角記号のアンダースコア(アンダーバー)は変数名の先頭にも使えるのですが、別の意味合い(プライベート変数など)が生じるため、使うことは避けた方が良いでしょう。
- 予約語は使えない
予約語とは、Pythonで使用されることが決まっている単語です。予約語は次の通りです。
‘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’
定数とは、変数と違い最初に代入した値を変えることなく使用する変数です。定数名は慣例的に半角英字の大文字で書いた単語をアンダースコアで区切り変数名と見分けがつくようにします。(MAX_SIZE = 10000)
変数名の例
わかりやすい変数名を付けると良いです。自分が作成したプログラムも3年も経つとすっかり忘れてしまいます。すっかり忘れてしまった自分や、そのプログラムをはじめて見る人でもわかるような変数名が理想です。
# 半角英字
name = "織田信長"
# アンダースコア
name_count = 0
# 半角数字
message_001 = "ありがとうございます。"
# 定数
MAX_SIZE = 10000
単語をアンダースコアで繋いで変数名にするとわかりやすくなります。ですが、あまりにも長い変数名は避けた方が良いでしょう。
まとめ
- 変数とは、値の格納場所と紐づけた参照用の名前です。
- 変数の定義とは、変数の作り方です。
- 変数への代入とは、変数と値の格納場所を紐づけることです。
- 空の変数を作るには、変数に「None」を代入します。
- 変数名に使える文字は、半角英字(小文字のみ)、半角数字、半角記号のアンダースコアです。
- 変数名に使えない使わない方が良い文字は、半角英字(大文字)、先頭の半角数字、先頭のアンダースコア、予約語です。