python - Python 上的 Return 语句似乎不起作用(在 Spyder 上)

标签 python anaconda 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())

在编辑器上运行代码之后。

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 以前从未做过如此奇怪的事情,发生了什么事?

这是一个可视化。编辑器中的代码

enter image description here

在控制台显示的编辑器中运行代码后的结果

enter image description here

最佳答案

假设第 116-118 行缺少的输出让您感到不安:

编辑器将您的代码作为普通 python 脚本处理,这意味着 test() 语句不会打印其结果。

立即显示结果是 python 控制台的一个特殊功能,而不是正常的 python 行为。

要实际打印结果,您必须调用 print(test()),就像您在第 119-120 行所做的那样


更新:在 PyCharm 中进行一些测试后 我得到以下行为:

复制粘贴到 python 控制台:

def test():
    return 2
test()
>>press enter

确实会导致空白输出,但是:

def test():
    return 2
>>press enter
test()
>>press enter

按预期打印 2。所以我的结论是 Spyder 可能没有显示返回值,因为它正在执行多指令脚本而不是单个操作。

关于python - Python 上的 Return 语句似乎不起作用(在 Spyder 上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43452939/

相关文章:

python - 在 python 2.7 中使用 tkinter 动态添加复选框

python - 如何防止 Spyder 在获取用户输入后插入新行?

python - 如何将 pyqt4 与当前的 python 和spyder 版本一起使用?

python - Peewee ORM - 从一个主数据库中的多个数据库复制数据

python - Mysql数据库无法连接到python

python - matplotlib 还需要安装哪些其他库来编写 tiff 文件?

linux - Anaconda5.0.1在linux上安装失败由于python3.6上的permission denied错误

python - 无法在 Anaconda 虚拟环境中安装软件包。 'Packages are not available from current channels'

python - 属性错误: 'module' object has no attribute 'Graph'

python - 如何在 pysimplegui 中增加 inputText 框?