![](/img/trans.png)
[英]Python - Can't seem to get return statement to work in simple function?
[英]Return statement on Python does not seem to work (on Spyder)
我已经使用Python一段时间了,并且我使用的IDE没有任何问题(我使用过WingIDE,现在我使用Spyder)。
但是当我开始测试我在编辑器上输入的一些代码时,今天,return语句似乎不起作用。 然后我写了更多的基本测试,看看返回做了什么,并发现其他功能也不能正常工作。
例如,对于该功能,
def test():
return 2
'''the code below is written in the editor'''
test()
print(type(test()))
print(test())
在编辑器上运行代码之后。
test()
返回'nothing'(但它实际上并不是'nothing / None / blank space')
type(test())
返回'nothing'(但它实际上并不是'nothing / None / blank space')
print(type(test())
打印'class'int'''
print(test())
打印2
但是当我在控制台上键入test()
时,它返回2
,当我在控制台上键入type(test())
时,它返回class: int
。
请注意,在更新Spyder之前和之后会出现相同的结果。 之前,编辑器中的代码与控制台中的代码的运行方式相同,因为在编辑器中运行代码时,编辑器中输入test()
会返回2。
Python / Spyder之前没有做过任何奇怪的事情,发生了什么?
这是一个可视化。 编辑中的代码
在控制台中显示的编辑器中运行代码后的结果
假设第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可能没有显示返回值,因为它正在执行多指令脚本而不是单个操作。
为了扩展Fabian的N.答案,Spyder有不同的评估模型:
Run file
,相当于python my_file.py
。 Run line
和Run cell
,将行或单元格的内容复制到IPython控制台并在那里运行。 此模型不需要在代码中添加print
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.