奇怪的IPython行为:变量名中的"pass"、"return"或"raise"终止函数/类定义



我一直在IPython shell中学习SQLAlchemy ORM教程,到了必须将password = Column(String)放入类定义的地步。奇怪的是,我一输入类定义就终止了

玩了一会儿之后,我发现类或函数定义中以passreturnraise开头的任何一行,例如

def f(x):
    returnfoo = None

终止IPython中的定义。这在默认的python解释器中不会发生,所以这不是python问题。我认为这是IPython中的一个错误,但我想确保这不仅仅是我的系统;有人能证实这种行为吗?

编辑:我使用的是预装在Mac OS X Snow Leopard上的IPython 0.11.dev for Python 2.6。在0.10.2中,它实际上并没有终止函数/类定义——也没有

def f(x):
    return

但它确实错误地重置了缩进,因此如果再次按Enter,类定义将结束。

它在我的系统上不能以这种方式工作。

In [1]: def f(x):
   ...:     returnfoo = None
   ...:     return returnfoo
   ...: 

我的版本:

$ ipython -V
0.10.2

没有这个问题:

>>> def f(x):
    returnfoo = None
    return x
...: 
>>> f(1)
<<< 1

最新更新