Возвращение кортежа с один элемент из функции

Только что наткнулся на эту небольшую странность в 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
>>>
16
задан mcstrother 13 July 2011 в 19:57
поделиться