Python の挙動でびっくりしたことを書いておく。
リストとタプルを足し算すると TypeError になる。
>>> [] + () Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can only concatenate list (not "tuple") to list >>>
至極当然。
ところが +=
では エラーにならない。
>>> a = [] >>> a += (1,) >>> a [1] >>>
完全に虚を突かれた。
ちなみに +=
を使うと文字列も足せるし、実は iterable ならなんでもいけるっぽい。
>>> a += {2: None} >>> a [1, 2] >>> a += "345" >>> a [1, 2, '3', '4', '5'] >>> def iterable(): ... yield 6 ... >>> a += iterable() >>> a [1, 2, '3', '4', '5', 6] >>>
ライブラリリファレンスとかからはこういう挙動は読み取れないけど、 どこを見たら書いてあるんですかね。
ラベル:Python