При документировании функции Python я считаю более питоническим сказать:
def Foo(i):
"""i: An interable containing…"""
…скорее, чем…
def Foo(i):
"""i: A list of …"""
Когда i
действительно не нужно быть list
. (Foo
с радостью будет работать на set
, tuple
и т. д.) Проблема в генераторах. Генераторы обычно допускают только 1 итерацию. Большинство функций совместимы с генераторами или итерируемыми объектами, которые допускают только один проход, но некоторые из них не поддерживаются.
Для тех функций, которые не могут принимать генераторы/вещи, которые могут быть повторены только один раз, существует ли четкий, последовательный термин Python, чтобы сказать «вещь, которую можно повторять только более одного раза»?
Глоссарий Python для iterable и iterator, похоже, имеет определение "один раз, но, возможно, и больше, если вам повезет".
__contains__()
, который не является ни необходимым, ни достаточным для повторного использования итерации. docs.python.org/library/collections.html#collections.Container - person Michael Hoffman   schedule 29.11.2011