我使用Python已经有一段时间了,我使用过的IDE没有问题(我使用过WingIDE,现在使用了Spyder)。
但是,当我今天开始测试在编辑器上输入的一些代码时,返回语句似乎不起作用。然后,我编写了更基本的测试,查看返回功能,并发现其他函数也不能正常工作。
例如,对于函数,
def test():
return 2
'''the code below is written in the editor'''
test()
print(type(test()))
print(test())
在编辑器上运行代码之后。
test()
返回“nothing”(但实际上不是“nothing/None/空格”)
type(test())
返回“nothing”(但实际上不是“nothing/None/空格”)
print(type(test())
打印'class 'int‘’
print(test())
打印2
但是当我在控制台上输入test()
时,它返回2
,当我在控制台上键入type(test())
时,它返回class: int
。
注意,相同的结果发生在我更新Spyder之前和之后。以前,编辑器中的代码的功能与控制台中的代码相同,就像在编辑器中键入test()
时在编辑器中运行代码时返回的那样。
Python/Spyder以前没有做过这么奇怪的事情,发生了什么?
这是一个可视化的例子。编辑器中的代码
在控制台中显示的编辑器中运行代码后的结果
发布于 2017-04-17 06:41:17
假设第116-118行缺少的输出使您感到不安:
编辑器将您的代码处理为一个普通的python脚本,这意味着语句ala test()
不打印其结果。
立即显示的结果是python控制台的一个特殊函数,而不是正常的python行为。
要实际打印结果,必须像在第119-120行中那样调用print(test())
。
更新:在PyCharm中进行了一些测试之后,我得到了以下行为:
复制并粘贴到python控制台:
def test():
return 2
test()
>>press enter
实际上,结果是空白输出,但如下所示:
def test():
return 2
>>press enter
test()
>>press enter
按预期打印2
。所以我的结论是Spyder可能没有显示返回值,因为它执行的是一个多指令脚本,而不是一个操作。
发布于 2017-04-17 15:12:44
为了扩展Fabian's N.答案,Spyder有不同的评估模型:
Run file
,这相当于python my_file.py
。Run line
和Run cell
,它们将一行或单元格的内容复制到IPython控制台并在那里运行。这个模型不需要在代码中添加print
。https://stackoverflow.com/questions/43452939
复制相似问题