Skip to content

toona note

python の tuple にかかる最適化処理

はじめに

python の tuple は効率化の処理が行われているようです。
tuple の id を通して最適化処理を確認します。

複数行記述 と 一行記述の処理の違い

python を実行できるプロンプトで次のコードを実行します。

もし手元で実行していただいたなら、実行結果として出力される id は実行した環境に依存するので、上記コードとは異なるはずです。
出力される id は
しかし、ここで重要なのは tuple_1 と tuple_2 の id が異なることです。
つまり、 tuple_1, tuple_2 は別のインスタンスとして処理されています。

次に少しだけ内容を変えた次のコードを実行してみます。

今度は tuple_1 と tuple_2 が同一の id となります。
タプルは定義した時点で値が固定される不変 (immutable) なオブジェクトなので、定義時の値が同一であるタプルは全く同一のタプルであるとして問題ないのです。
タプルの定義を 1 行で行うと最適化処理が行われるようです。

空白タプル

次は値を持たない空のタプルを確認してみます。

今度は複数行で定義しても同一の id をもった同一インスタンスとなっていることがわかります。

タプルは不変なオブジェクトなので、空のタプルは常に同一のインスタンスを指して問題がないからです。

動作環境

python: 3.8.11