我在Python中发现了关于迭代器行为的这个问题:
当我输入代码时:
a = iter(list(range(10)))
for i in a:
print a
next(a)
Run Code Online (Sandbox Code Playgroud)
进入jupyter-qtconsole它返回:
0
2
4
6
8
Run Code Online (Sandbox Code Playgroud)
就像Martijn Pieters所说的那样,当翻译不响应号召时next(a).
但是,当我在我的Bash解释器和IDLE中再次运行相同的代码时,代码打印出来:
0
1
2
3
4
5
6
7
8
9
Run Code Online (Sandbox Code Playgroud)
到控制台.
我跑了代码:
import platform
platform.python_implementation()
Run Code Online (Sandbox Code Playgroud)
在所有三个环境中,他们都说我跑了'CPython'.
那么为什么QtConsole next(a)在IDLE和Bash没有时会抑制调用呢?
如果它有帮助,我在Mac OSX上运行Python 2.7.9并使用Anaconda发行版.