Pythonの変数は、「データが格納されているメモリ上の場所(オブジェクト)に付けられたラベル(名前)」と理解するのが最も適切です。🏠🏷️
多くのプログラミング言語のように「データを格納するための箱」と理解しても間違いではありませんが、Pythonでは「名前をデータに結びつける」という側面が非常に重要です。
Pythonの変数を理解するための重要なポイントは以下の3点です。
変数は、値(データ)そのものを直接保持しているのではなく、その値が格納されているオブジェクト(メモリ上の実体)を指し示しています。これは、1つのオブジェクトに複数のラベル(変数名)を貼ることができるということです。
a = [1, 2, 3]
b = a # b は a と同じリストオブジェクトを指す
b.append(4)
print(a)
# 出力: [1, 2, 3, 4] -> b の操作が a に影響するのは、同じオブジェクトを見ているため
C++やJavaのような言語では、変数を宣言するときに型を指定しますが、Pythonでは変数名に型はありません。データ型は、変数名が指し示している「値(オブジェクト)」自体が持っています。
x = 10 # x は整数オブジェクト (int) を指す
x = "Hello" # x は文字列オブジェクト (str) を指す
# 変数 x の型が変わったのではなく、x が指し示すオブジェクトが変わった
Pythonにおける代入演算子 (=) は、数学的な「等しい」という意味ではなく、「右辺のオブジェクトを、左辺の変数名に結びつける」という操作を意味します。
この「ラベル付け」の考え方こそが、Pythonの動的型付け(Dynamically Typed)という性質を支えています。
| 誤解されやすい理解 | Pythonの正確な理解 |
|---|---|
| 箱(データを入れる場所) | ラベル(データが置かれた場所を指す名前) |
| 変数に型がある | オブジェクト(値)に型がある |
したがって、Pythonの変数は、「特定のデータを指し示す、柔軟に変更可能な名前のタグ」として捉えるのが最も正確です。