タプルの存在意義

Pythonにおけるタプルの存在意義 リターンズ http://www.nishiohirokazu.org/blog/2007/02/python_16.html

「変更可能なものはハッシュ(辞書)のキーになれないという表現はおかしい」というのは西尾さんの一連のブログを読むまで気づかなかった。


リストはキーにすると挙動がおかしい ⇒ immutableなリストならOK ⇒ タプルという型を作った


という歴史が見えるのは面白いとして、「タプルが必要なところだけ勝手に変換すればいいじゃないか」というのはどうだろう?逆の「取り出したものが入っているものと違う」というのは防御的コピーなど存在意義があるとして、そもそもタプルに変換して入れても基となるオブジェクトまでimmutableにするのは直感的におかしいし、しないなら自由に書き換えられてどっちみち矛盾してしまうので入れたものをタプルに変換しても全く意味はない。


タプルをやめるなら単にJavaみたいに何も制限を付けずにユーザ任せしかないと思う。一部のオブジェクトだけ特別にエラーを出すというのは一貫性がないように見えるが、特別なことをしない限り普通の使い方ならエラーを出してくれると考えると一貫性はあるとも言えるのか...。