Python でこのちょっとした奇妙さに出くわしたので、他の誰かが私と同じ実りのない検索用語で答えを見つけようとしている場合に備えて、ここに質問として書き込んでおこうと思いました。
タプルのアンパックにより、戻り値を反復処理することを期待している場合、長さ 1 のタプルを返すことができないように見えます。見た目はだまされているようですが。答えを見てください。
>>> def returns_list_of_one(a):
... return [a]
...
>>> def returns_tuple_of_one(a):
... return (a)
...
>>> def returns_tuple_of_two(a):
... return (a, a)
...
>>> for n in returns_list_of_one(10):
... print n
...
10
>>> for n in returns_tuple_of_two(10):
... print n
...
10
10
>>> for n in returns_tuple_of_one(10):
... print n
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>>