在标准的Python交互式shell中,我可以按 Ctrl + D 来关闭stdin并显示输出:
$ python
Python 2.7.2 (default, Mar 7 2012, 21:18:58)
[GCC 4.5.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> for f in range(5):
... print f (I press Enter here)
... (I press Ctrl+D here)
0
1
2
3
4
>>>
但是在IPython和bpython中, Ctrl + D 不起作用,我必须按 Enter 两次才能得到结果:
IPython的:
In [1]: for f in range(5):
...: print f (I press Enter here)
...: (I press Enter here)
...: (I press Enter here)
0
1
2
3
4
bpython:
>>> for f in range(5):
... print f (I press Enter here)
... (I press Enter here)
... (I press Enter here)
0
1
2
3
4
我正在使用的版本:
[I] dev-python/ipython
Available versions: 0.10 0.10.1 0.10.2 ~0.12-r1 {doc emacs examples gnuplot matplotlib mongodb notebook qt4 readline (+)smp sqlite test wxwidgets}
Installed versions: 0.10.2(03:54:09 PM 08/12/2011)(examples readline -doc -emacs -gnuplot -smp -test -wxwidgets)
Homepage: http://ipython.org/
Description: Advanced interactive shell for Python
[I] dev-python/bpython
Available versions: 0.9.7.1 0.10.1 {gtk urwid}
Installed versions: 0.10.1(10:34:17 AM 03/14/2012)(gtk -urwid)
Homepage: http://www.bpython-interpreter.org/ https://bitbucket.org/bobf/bpython/ http://pypi.python.org/pypi/bpython
Description: Syntax highlighting and autocompletion for the Python interpreter
答案 0 :(得分:0)
我通过将IPython升级到版本0.12-r1来解决了一半的问题:
[I] dev-python/ipython
Available versions: 0.10 0.10.1 0.10.2 (~)0.12-r1 {doc emacs examples gnuplot matplotlib mongodb notebook qt4 readline (+)smp sqlite test wxwidgets}
Installed versions: 0.12-r1(11:47:58 AM 03/16/2012)(examples qt4 readline smp -doc -emacs -matplotlib -mongodb -notebook -sqlite -test -wxwidgets)
Homepage: http://ipython.org/
Description: Advanced interactive shell for Python
注意...:
你会看到我只需要按两次 Enter :第一个用来创建一个新行,第二个用于关闭stdin并显示结果:
$ ipython
Python 2.7.2 (default, Mar 7 2012, 21:18:58)
Type "copyright", "credits" or "license" for more information.
IPython 0.12 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: for i in range(2):
...: for j in range(2):
...: print i*j
...:
0
0
0
1
关于bpython,它需要在显示输出之前转到没有缩进的行。出于测试目的,如果我使用两个嵌套的for
循环,我必须按 Enter 四次:
>>> for i in range(2):
... for j in range(2):
... print i*j
...
...
...
0
0
0
1
答案 1 :(得分:-1)
你只需要按 Enter 键两次,标准的Python交互式shell和IPython在这里提供相同的结果+效果。