gpt4 book ai didi

python - 我可以将其表示为生成器/协程吗?

转载 作者:太空宇宙 更新时间:2023-11-04 10:59:58 26 4
gpt4 key购买 nike

假设我有以下类(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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com