【发布时间】:2018-01-25 04:57:42
【问题描述】:
下面是一个生成器函数。
def f():
x=1
while 1:
y = yield x
x += y
这个生成器函数 (f) 是否在内部实现,如下所示?
class f(collections.Iterable):
def __init__(self):
self.x = 1
def __iter__(self):
return iter(self)
def __next__(self):
return self.x
def send(self, y):
self.x += y
return self.next()
编辑:
This 是我问题的答案。
【问题讨论】:
-
您可以自己测试他们的行为是否相同。对于 SO 问题来说,进入内部实现细节似乎过于宽泛。
-
当然不等价,一个是类,一个是函数
-
简短的回答是,生成器没有在内部实现,如纯 python 类中所示。相反,它们与常规函数共享大部分相同的逻辑。
标签: python generator python-internals