【发布时间】:2019-03-29 07:51:41
【问题描述】:
这是代码:
def counter(start=0):
n = start
while True:
result = yield n
print(type(result), result)
if result == 'Q':
break
n += 1
c = counter()
print(next(c))
print(c.send('Wow!'))
print(next(c))
print(c.send('Q'))
这是输出:
0
<class 'str'> Wow!
1
<class 'NoneType'> None
2
<class 'str'> Q
Traceback (most recent call last):
File "gen.send.py", line 14, in <module>
print(c.send('Q')) # F
StopIteration
我可以理解为什么要打印类型行 (<classs '.....' ......>),但我不明白为什么要打印迭代号(0、1 和 2),因为我不明白应该如何假设屈服线要打印它,有人可以向我解释一下吗?
【问题讨论】:
-
print(next(c))您是在此声明中打印它的人。由于yield n,当您在生成器上调用 next 时,n的值会生成,然后打印它。
标签: python python-3.x