我已经使用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'(但实际上并非'无/无/空格')
type(test())
返回'nothing'(但实际上并非'无/无/空格')
print(type(test())
打印'class'int''
print(test())
打印2
但是当我在控制台上输入test()
时,它会返回2
,当我在控制台上输入type(test())
时,它会返回class: int
。
请注意,在我更新Spyder之前和之后会出现相同的结果。之前,编辑器中的代码与控制台中的代码的运行方式相同,就像在编辑器中键入test()
时在编辑器中运行代码时返回2一样。
Python / Spyder之前没有做过任何奇怪的事情,发生了什么?
这是一个可视化。编辑中的代码
在控制台中显示的编辑器中运行代码后的结果
答案 0 :(得分:1)
假设第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可能没有显示返回值,因为它正在执行多指令脚本而不是单个操作。
答案 1 :(得分:1)
为了扩展Fabian's N.答案,Spyder有不同的评估模型:
Run file
,相当于python my_file.py
。Run line
和Run cell
,它将行或单元格的内容复制到IPython控制台并在那里运行。此模型不需要在代码中添加print
。