在记录 Python 函数时,我发现这样说更符合 Pythonic:
def Foo(i):
"""i: An interable containing…"""
……而不是……
def Foo(i):
"""i: A list of …"""
当 i
真的不需要是一个 list
时。 (Foo
将愉快地对 set
、tuple
等进行操作)问题是生成器。生成器通常只允许 1 次迭代。 大多数函数都适用于只允许单次传递的生成器或可迭代对象,但有些则不行。
对于那些不能接受生成器/只能迭代一次的东西的函数,是否有一个清晰、一致的 Python 术语来表示“只能迭代多次的东西”?
最佳答案
我不知道这方面的标准术语,至少不是随口说的,但我认为如果您需要一个简短的短语,“可重用可迭代”会明白这一点。
在实践中,通常可以构建您的函数,这样您就不需要多次迭代 i
。或者,您可以从可迭代对象中创建一个列表,然后根据需要多次迭代该列表;或者您可以使用 itertools.tee
获取迭代器的多个独立“副本”。这让您可以接受一个生成器,即使您确实需要多次使用它。
关于Python 文档 : iterable many times?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8306465/