gpt4 book ai didi

python - 为什么这段代码不打印 3

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

这是代码(由 David Beazley 提供,幻灯片 #32 http://dabeaz.com/coroutines/Coroutines.pdf):

def countdown(n):
print "Counting down from", n
while n >= 0:
newvalue = (yield n)
# If a new value got sent in, reset n with it
if newvalue is not None:
n = newvalue
else:
n -= 1

c = countdown(5)
for n in c:
print n
if n == 5:
c.send(3)

这是输出:http://codepad.org/8eY3HLsK

我知道它不打印 4,但为什么不打印 3?一旦 n 设置为 3,下一次迭代应该产生 3 而不是 2?我错过了什么?

最佳答案

作为documented ,向生成器发送一个值也会使生成器前进一步并产生下一个值。值 3 在 c.send(3) 行产生,但您没有对它做任何事情,所以您看不到它。然后在 while 循环的下一次旅行中,它会从那里开始倒计时。如果将最后一行更改为 print c.send(3),那么您将看到 3。

关于python - 为什么这段代码不打印 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18996444/

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