首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python上的返回语句似乎不起作用(在Spyder上)

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

Stack Overflow用户
提问于 2017-04-17 13:58:07
回答 2查看 3.3K关注 0票数 3

我使用Python已经有一段时间了,我使用过的IDE没有问题(我使用过WingIDE,现在使用了Spyder)。

但是,当我今天开始测试在编辑器上输入的一些代码时,返回语句似乎不起作用。然后,我编写了更基本的测试,查看返回功能,并发现其他函数也不能正常工作。

例如,对于函数,

代码语言:javascript
代码运行次数:0
运行
复制
def test():
    return 2

'''the code below is written in the editor'''
test()
print(type(test()))
print(test())

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

test()返回“nothing”(但实际上不是“nothing/None/空格”)

type(test())返回“nothing”(但实际上不是“nothing/None/空格”)

print(type(test())打印'class 'int‘’

print(test())打印2

但是当我在控制台上输入test()时,它返回2,当我在控制台上键入type(test())时,它返回class: int

注意,相同的结果发生在我更新Spyder之前和之后。以前,编辑器中的代码的功能与控制台中的代码相同,就像在编辑器中键入test()时在编辑器中运行代码时返回的那样。

Python/Spyder以前没有做过这么奇怪的事情,发生了什么?

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-17 14:41:17

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

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

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

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

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

复制并粘贴到python控制台:

代码语言:javascript
代码运行次数:0
运行
复制
def test():
    return 2
test()
>>press enter

实际上,结果是空白输出,但如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
def test():
    return 2
>>press enter
test()
>>press enter

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

票数 1
EN

Stack Overflow用户

发布于 2017-04-17 23:12:44

为了扩展Fabian's N.答案,Spyder有不同的评估模型:

  1. Run file,这相当于python my_file.py
  2. Run lineRun cell,它们将一行或单元格的内容复制到IPython控制台并在那里运行。这个模型不需要在代码中添加print
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43452939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档