Просто наткнулся на эту маленькую странность в 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
>>>