请问大家为什么这个代码yield返回的结果会少了一个2呢?
代码如下:
def count_down(n):
while n>=0:
nx=yield n
print("nx=",nx)
n-=1
lis=count_down(5)
for i in lis:
print(i)
if i==3:
lis.send(100)
python返回的结果如下:
5
nx= None
4
nx= None
3
nx= 100
nx= None
1
nx= None
0
nx= None
我预计的结果是nx=100后面有一个2,然后才是nx=none5,像这样:
5
nx= None
4
nx= None
3
nx= 100
2
nx= None
1
nx= None
0
nx= None
结果证明我错了,请问是哪里出现了问题呢?
send() 有返回值,会返还下一项
可以把最后改成
if i==3:
ret = lis.send(100)
print(ret)