假设我有以下类(class):
class MyGen(object):
def next(self):
return X()
def send(self, x):
return f(x)
是否可以使用 yield
关键字将其表示为单个函数?假设我有 g = MyGen()
。请注意,g.next()
不应调用 f()
,g.send(x)
不应调用 X()
,但是 f()
和 X()
可以共享一些代码。
最佳答案
这段代码几乎是等价的:
def my_gen(x=None):
while True:
if x is None:
x = yield X()
else:
x = yield f(x)
一个区别是您不能在第一次调用 next()
之前向生成器发送一个值(None
除外)。另一个区别是发送 None
不会触发调用 f()
,因为生成器无法区分 send(None)
和 >下一步()
。
关于python - 我可以将其表示为生成器/协程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6428164/