不明白这种方式的作品
这个问题在这里已经有了答案:
由于在循环中有3个收益声明,因此您将产生三次alpha
。
从而:
3次3等于9。
你的输出解释了:
1 <-- counter
('alpha', 'one') <-- first yield statement
2 <-- counter
('alpha', 'two') <-- second yield statement
3 <-- counter
('alpha', 'three') <-- third yield statement
<-- print statement in loop in function
4 <-- counter
('beta', 'one') <-- first yield statement, second iteration of loop
5 <-- counter
('beta', 'two') <-- second yield statement
6 <-- counter
('beta', 'three') <-- third yield statement
<-- print statement in loop in function
7 <-- counter
('carotene', 'one') <-- first yield statement, third iteration of loop
8 <-- counter
('carotene', 'two') <-- second yield statement
9 <-- counter
('carotene', 'three') <-- third yield statement
<-- print statement in loop in function
我= 9,因为循环实际上运行了9次。
发生的事情是,每次next()被调用时,它都会在前一个yield之后继续执行。
第一次next()被调用时,下列行在createGenerator()中被执行
mylist = [ 'alpha', 'beta', 'carotene' ]
for i in mylist:
yield i, "one"
第一个收益率返回(“alpha”,“one”)。 此时执行返回到for循环并打印。 在for循环的下一次迭代中,执行返回到先前yield之后的createGenerator()。 以下行被执行:
yield i, "two"
它返回(“alpha”,“two”)并在for循环中打印。 for循环结束时,发电机没有更多的价值返回,当我==“胡萝卜素”和“三”被放弃
链接地址: http://www.djcxy.com/p/1555.html