擅长:python、mysql、java
<p>任何时候你使用<code>x.__next__()</code>它都会得到下一个产生的数字-你不会检查每个产生的数字,10被跳过-所以它会在20后继续运行并中断。</p>
<p>修复:</p>
<pre><code>def simpleGeneratorFun(n):
while n<20:
yield (n)
n=n+1
# return [1,2,3]
x = simpleGeneratorFun(1)
while True:
try:
val = next(x) # x.__next__() is "private", see @Aran-Frey comment
print(val)
if val == 10:
break
except StopIteration as e:
print(e)
break
</code></pre>