【发布时间】:2020-04-07 04:53:03
【问题描述】:
这是我正在运行的代码:
def infinite_Third() -> Generator:
num = 1
while True:
if num % 3 ==0:
i = (yield num)
if i is not None:
num = i
num += 1
if __name__=='__main__':
third_gen = infinite_Third()
for i in third_gen:
print(f"it is {i}")
if i>1000:
break
third_gen.send(10*i+1)
我希望看到如下结果:
it is 3
it is 33
it is 333
it is 3333
然而,我真正得到的是:
it is 3
it is 36
it is 366
it is 3666
我认为这可能与在主代码中使用 send 有关,但无法弄清楚原因。有人可以帮忙吗?
【问题讨论】:
-
需要考虑
third_gen.send的返回值 -
“发送值”和“接收值”不是生成器中的单独操作。
send也接收一个值。
标签: python generator send yield