为什么分号在IPython中返回一个空字符串?

时间:2016-12-23 22:01:27

标签: python ipython

运行IPython时,如果计算分号,则会得到空字符串的返回值,如下所示。为什么?我的理论是,它的IPython在声明中删除了行终止符,但仍然没有解释为什么它返回一个字符串。

$ ipython
Python 2.7.12 (default, Oct 11 2016, 05:24:00)
Type "copyright", "credits" or "license" for more information.

IPython 5.1.0 -- 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]: ;
Out[1]: ''

这也适用于Python 3的IPython。

编辑抱歉,应该更清楚一点:这不适用于标准的Python shell,只能在IPython中使用。

1 个答案:

答案 0 :(得分:5)

IPython在行开头处对分号进行了特殊处理。例如:

In [1]: ;ord A   # autocall -- calls function "ord" on string "A"
Out[1]: 65

看起来如果它无法解析函数名称,就会出现错误行为:

In [4]: ;;;
Out[4]: ';;'

In [5]: ;?huh
Out[5]: '?huh'

In [6]: ;?huh?
Object `huh` not found.

In [7]: ;?huh
Out[7]: '?huh;?huh'

In [8]: 

(以上是运行Python 3.5.2的IPython 2.4.1。)

因此,我不会尝试将其解释为"剥离线路终结器"或尝试将其与Python语法联系起来。