【发布时间】:2014-01-02 16:48:02
【问题描述】:
在容器类中,当我想要迭代它的项目(或它的项目的转换,或它的项目的子集)时,我可以编写一个生成器(如f)或返回一个生成器(如g):
class SomeContainer:
def __init__(self):
self.data = [1, 'two', 3, 'four']
def f(self):
for e in self.data: yield e + e
def g(self):
return (e + e for e in self.data)
sc = SomeContainer()
for x in sc.f(): print(x)
for x in sc.g(): print(x)
我不需要通过send 将信息传递到生成器。
显然两种方式的行为相同(表面上)。
哪种方法更可取,为什么?
哪种方法产生的更少 开销或其他我没有发现的优势?
【问题讨论】:
标签: python python-3.x generator python-internals