IPython的奇怪行为

liv2hak

在IPython中,我键入以下程序

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

我希望看到输出为'2'。我什么都没看到?我似乎不知道为什么吗?

rts

IPython会在您的return语句后再输入一个换行符,因此,在定义完之后,只需按Enter键即可foofoo直到最后一级缩进,才能定义

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

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

In [2]:

如果要避免副作用定义foo函数,请在函数后添加新行return以关闭函数定义,然后分别调用,print如下所示:

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

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

In [3]:

即使您确实选择以现在编写的方式编写代码块,foo也仍然可以按预期定义,因为对的调用print不在的范围之内foo随后的任何呼叫foo均应按预期进行。

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

In [2]: foo??
Type:       function
String Form:<function foo at 0x246cde8>
File:       /home/siemenr/<ipython-input-1-f97d0fe9d8f9>
Definition: foo()
Source:
def foo():
    return 2

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

In [4]:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章