IPython的奇怪行为

时间:2014-04-13 00:25:27

标签: python ipython

在IPython中我输入以下程序

def foo():
   ...:     return 2
   ...: print(foo())

我希望看到输出'2'。我没有看到任何类似的东西?我似乎无法弄清楚为什么?

1 个答案:

答案 0 :(得分:3)

IPython希望在您的return声明之后再换一个换行符,所以只需在定义foo后点按回车键即可。在您关闭最后一个缩进级别之前,它不会让您定义foo

您可能还会注意到,当您添加换行符时,IPython会立即执行您刚刚定义的代码块中的print函数。

In [1]: def foo():
   ...:     return 2
   ...: print(foo())
   ...: 
2

In [2]:

如果您想避免副作用定义foo功能,请在return之后添加换行符以关闭函数定义,然后单独调用print,如下所示:< / p>

In [1]: def foo():
   ...:     return 2
   ...: 

In [2]: print(foo())
2

In [3]:

即使您选择以您现在编写的方式编写代码块,foo仍将按预期定义,因为您对print的调用超出了{{foo的范围1}}。对[{1}}的任何后续调用都应按预期工作。

foo