環境設定 数値 文字列 正規表現 リスト タプル 集合 辞書 ループ 関数 クラス データクラス 時間 パス ファイル スクレイピング その他

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) がどこかに存在しています。ナナシのオブジェクトにアクセスするのは容易ではないため、プログラマーの側になると消えてしまったように見えます。

Python タプル