この文書の目的
一要素の Tuple は (1,) と書くのに空 Tuple は (,) ではなく ( ) と書くことを知った時の驚きを書き残したい、という、だけ、のものです。
(ああ話が終わってしまった)
つまり
Python の Tuple は、
- 三要素の Tuple は (1, 2, 3) と書く ← わかる
- 二要素の Tuple は (1, 2) と書く ← わかる
- 一要素の Tuple は (1, ) と書く ← ええええ
- ( 1 ) と書くと int の 1 だと認識される ← なるほど仕方ない
- (1, ) と書くことで一要素の Tuple だと認識される ← ええええ
そうか「 , 」があることが Tuple を産むのか、と思いきや、
- 空の Tuple は ( , ) ではなく ( ) と書く ← なんということ
- ( ) と書くと空 Tuple ← ほうそう来たか
- ( , ) と書くと文法エラー ← ええええ
直感的には、
- ( ,1) と書くと今は文法エラーだが、これも一要素の Tuple とすることにして、
- (,) と書くと空 Tuple になる
方がしっくりくる感じもあるが、まあ仕方ないか。
補足
なお a = 1, 2 のように、曖昧さなくこれは Tuple だと判断できる場合は ( ) は不要です。
type(1, 2) と書くとしかし type( ) 関数に引数が二つあると解釈されてしまうので、こうした場合は type( (1, 2) ) と書かねばなりません。