Python のタプルに要素を追加する方法 - オブジェクトと変数の違い
Python のタプルに要素を追加する方法を解説します…と言ったら「なんだこのサイト…知ったかぶりの初心者がなんかふざけたことをぬかしてる」と怒られるかもしれない。
タプルは変更できないオブジェクトで、要素は絶対に追加できない。でも下のコードを見たら、プログラミングの初心者は「いやいや、タプルも変更できるっしょ」と思ってしまうかも。
a = (1, 2, 3)
a = a + (4,)
print(a) # (1, 2, 3, 4)
オブジェクトと変数の違い
タプルというオブジェクトは変更できない。しかし変数 a
への代入 assignment は (1, 2, 3)
から (1, 2, 3, 4)
に変更できる。
(1, 2, 3)
→ a
↓
(1, 2, 3, 4)
→ a
Python のプログラマーは、トロント大学の講義ノートが解説しているように、オブジェクト object と変数 variable を区別しないといけない。
タプルは object で、リストも辞書も object です。(1, 2, 3)
は object ですが、a
は object でなく variable です。
★ Python が処理するデータの実体はオブジェクトで、変数はただの名前
私は坂本真一郎という名前ですが、裁判所に認められたら山田太郎に改名できます。しかし私は私で、実体は変わらない。生物学的な私はオブジェクトで、坂本真一郎は変数です。
役所は名前がない人をどのように扱うか? たぶんなにもできない。Python もプログラマーも同じで、オブジェクトを扱うには名前がいる。それが a
という変数です。
日本にたくさんの鈴木一郎がいます。同じ名前の違う人がいるように、a
という名前がついた複数のオブジェクトがあってもおかしくない。ただし Python では (1, 2, 3, 4)
に a
という名前がついたとたん、(1, 2, 3)
の名前は a
から名無しの権兵衛になります。
(1, 2, 3)
→ a
↓
(1, 2, 3)
→ ?
(1, 2, 3, 4)
→ a
とはいえ、Python の実行中は (1, 2, 3)
がどこかに存在しています。ナナシのオブジェクトにアクセスするのは容易ではないため、プログラマーの側になると消えてしまったように見えます。