Python 可重复生成器、序列与映射深入解析
可重复生成器
在 Python 编程中,多次迭代一个对象的能力在可迭代对象类型中很常见,而生成器通常更便于使用。若需要一个每次访问迭代器时都能重新启动的生成器,可能会陷入两难:要么失去该功能,要么添加大量不必要的代码来实现正确的迭代。
我们可以借助 Python 的标准方式,将增强函数的逻辑提取到一个装饰器中。以下是实现可重复生成器的代码:
def repeatable(generator):
"""
A decorator to turn a generator into an object that can be
iterated multiple times, restarting the generator each time.
"""
class RepeatableGenerator:
def __init__(self, *args, **kwargs):
self.args = args
self.kwargs = kwargs
def __iter__(self):
return iter(generator(*self.args, **kwargs))
return RepeatableGenerator
@repeatable
def generator(max):
for x in range(max):
yield x
g = generator(5)
print(li
超级会员免费看
订阅专栏 解锁全文
4171

被折叠的 条评论
为什么被折叠?



