我一直在IPython shell中学习SQLAlchemy ORM教程,到了必须将password = Column(String)
放入类定义的地步。奇怪的是,我一输入类定义就终止了
玩了一会儿之后,我发现类或函数定义中以pass
、return
或raise
开头的任何一行,例如
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