擅长:python、mysql、java
<p>首先,在每个循环迭代中,通过对<code>__next__()</code>进行3次单独的调用来推进迭代器3次,因此<code>if x.__next__()==10</code>可能永远不会被命中,因为第10个元素可能已经在前面被使用了。同样的,也会错过你的while状态。</p>
<p>其次,python中通常有更好的模式,您不需要直接调用<code>next</code>。例如,如果您有有限的迭代器,请使用For循环在StopIteration时自动中断:</p>
<pre><code>x = simpleGeneratorFun(1)
for i in x:
print i
</code></pre>