在记录Python函数时,我发现更符合Pythonic的做法是这样说:
当
对于那些不能接受生成器/只能迭代一次的东西的函数,是否有一个清晰、一致的 Python 术语来表示“只能被迭代多次的东西”?
Python 词汇表中 iterable 和 iterator 看起来都有“一次,但如果你幸运的话可能会再次迭代”的定义。
def Foo(i):
"""i: An interable containing…"""
…而不是…
def Foo(i):
"""i: A list of …"""
当
i
不需要是一个列表时。(Foo
可以愉快地在 set
、tuple
等上操作。)问题出在生成器上。生成器通常只允许一次迭代。大多数函数可以接受只允许单次遍历的生成器或可迭代对象,但有些函数则不行。对于那些不能接受生成器/只能迭代一次的东西的函数,是否有一个清晰、一致的 Python 术语来表示“只能被迭代多次的东西”?
Python 词汇表中 iterable 和 iterator 看起来都有“一次,但如果你幸运的话可能会再次迭代”的定义。
__contains __()
方法的对象,这个方法既不是可重用迭代器所必需的,也不足够。http://docs.python.org/library/collections.html#collections.Container - Michael Hoffman