繁体   English   中英

Python上的返回语句似乎不起作用(在Spyder上)

[英]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有不同的评估模型:

  1. Run file ,相当于python my_file.py
  2. Run lineRun cell ,将行或单元格的内容复制到IPython控制台并在那里运行。 此模型不需要在代码中添加print

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM