我可以将其表达为生成器/协程吗?
假设我有以下类:
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()
可以共享一些代码。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
此代码几乎是等效的:
一个区别是,在第一次调用
next()
之前,您无法将值(None
除外)发送到生成器。另一个区别是发送None
不会触发调用f()
,因为生成器无法区分send(None)
和>下一个()
。This code will be almost equivalent:
One difference is that you can't send a value (other than
None
) to a generator before callingnext()
for the first time. Another difference is that sendingNone
won't trigger callingf()
, since the generator can't distinguishsend(None)
andnext()
.Sven 的表述正是要走的路,我只是想补充一点,如果你想了解更多有关 Python 中的生成器、协程等的信息,此网站就是您该去的地方。
Sven's formulation is exactly the way to go, I just wanted to add that if you want to know more about generators, coroutines and such in Python, this site is the place to go.