Return 关于 Python 的声明似乎不起作用(在 Spyder 上)
Return statement on Python does not seem to work (on Spyder)
我使用 Python 有一段时间了,我用过的 IDE 没有任何问题(我用过 WingIDE,现在我用 Spyder) .
但是当我开始测试我在编辑器上输入的一些代码时,今天 return 语句似乎不起作用。然后我写了更基本的测试,看看 return 做了什么,发现其他功能也不能正常工作。
例如函数,
def test():
return 2
'''the code below is written in the editor'''
test()
print(type(test()))
print(test())
在编辑器上 运行ning 代码之后。
test()
returns 'nothing'(但实际上不是'nothing/None/blank space')
type(test())
returns 'nothing'(但实际上不是'nothing/None/blank space')
print(type(test())
打印 'class 'int' '
print(test())
打印 2
但是当我在控制台上键入 test()
时,它 return 是 2
,而当我在控制台上键入 type(test())
时,它 return s class: int
.
请注意,在我更新 Spyder 之前和之后出现相同的结果。以前,编辑器中的代码与控制台中的代码功能相同,因为在编辑器中键入 test()
时 returned 2 当我 运行 中的代码时编辑.
Python/Spyder从来没有做过这么奇怪的事,怎么回事?
这是一个可视化。编辑器中的代码
运行在控制台中显示编辑器中的代码后的结果
假设第 116-118 行缺少的输出让您不高兴:
编辑器将您的代码作为普通 python 脚本处理,这意味着语句 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 可能没有显示 return 值,因为它正在执行多指令脚本而不是单个操作。
扩展Fabian's N.答案,Spyder有不同的评估模型:
Run file
,相当于python my_file.py
.
Run line
和 Run cell
,它们将一行或一个单元格的内容复制到 IPython 控制台并在那里 运行。此模型不需要将 print
添加到您的代码中。
我使用 Python 有一段时间了,我用过的 IDE 没有任何问题(我用过 WingIDE,现在我用 Spyder) .
但是当我开始测试我在编辑器上输入的一些代码时,今天 return 语句似乎不起作用。然后我写了更基本的测试,看看 return 做了什么,发现其他功能也不能正常工作。
例如函数,
def test():
return 2
'''the code below is written in the editor'''
test()
print(type(test()))
print(test())
在编辑器上 运行ning 代码之后。
test()
returns 'nothing'(但实际上不是'nothing/None/blank space')
type(test())
returns 'nothing'(但实际上不是'nothing/None/blank space')
print(type(test())
打印 'class 'int' '
print(test())
打印 2
但是当我在控制台上键入 test()
时,它 return 是 2
,而当我在控制台上键入 type(test())
时,它 return s class: int
.
请注意,在我更新 Spyder 之前和之后出现相同的结果。以前,编辑器中的代码与控制台中的代码功能相同,因为在编辑器中键入 test()
时 returned 2 当我 运行 中的代码时编辑.
Python/Spyder从来没有做过这么奇怪的事,怎么回事?
这是一个可视化。编辑器中的代码
运行在控制台中显示编辑器中的代码后的结果
假设第 116-118 行缺少的输出让您不高兴:
编辑器将您的代码作为普通 python 脚本处理,这意味着语句 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 可能没有显示 return 值,因为它正在执行多指令脚本而不是单个操作。
扩展Fabian's N.答案,Spyder有不同的评估模型:
Run file
,相当于python my_file.py
.Run line
和Run cell
,它们将一行或一个单元格的内容复制到 IPython 控制台并在那里 运行。此模型不需要将print
添加到您的代码中。