为啥这个函数会返回这个值? [复制]

Posted

技术标签:

【中文标题】为啥这个函数会返回这个值? [复制]【英文标题】:Why does this function return this value? [duplicate]为什么这个函数会返回这个值? [复制] 【发布时间】:2017-02-11 22:24:41 【问题描述】:

我使用 Python 定义了一个函数如下:

def output ():
  print "Hello, world!"

output ()

当此脚本在 windows 命令行中运行时,它将返回:

Hello, world!

我想澄清的是:为什么会这样?为什么没有定义返回值却输出了值?

【问题讨论】:

因为您正在调用一个内部带有print 的方法。 print打印到屏幕上。 字符串“你好,世界!”不返回,而是打印到标准输出。 该方法的默认返回是None。如果您执行res = output() 并打印出res,它将是None。但是您仍然会在屏幕上打印一些内容,因为调用该方法时会运行 print 语句。 @idjaw 谢谢,我现在明白了。如果你能把它写下来作为答案,我很乐意接受。再次感谢 【参考方案1】:

该方法的默认返回是None。如果您执行以下操作:

res = output()

并打印出res,它将是None。默认情况下,None 在不指定 return 时总是返回。

>>> def output():
...     print "Hello, world!"
...
>>> res = output()
Hello, world!
>>> res
>>> type(res)
<type 'NoneType'>

但是,您仍然会在屏幕上打印一些内容,因为调用该方法时会运行 print 语句。

【讨论】:

【参考方案2】:

返回值仅在思考程序如何工作的上下文中才有意义。对于最终用户来说,他们可能对返回值一无所知。

一个单独的概念,输出,是用户通常看到的。在这种情况下,程序使用了一个 print 语句,它输出到一个名为stdout 的输出流。此输出流通常由运行程序的控制台读取,然后输出到控制台。

该函数的实际返回值是None,但它从未输出给用户。

【讨论】:

【参考方案3】:

打印将打印到标准输出。这就是为什么。

【讨论】:

感谢您的回答,但我不太明白您在说什么。一些更多的说明将不胜感激。谢谢!

以上是关于为啥这个函数会返回这个值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

无法用函数的返回值初始化对象。为啥? [复制]

为啥这个异步函数返回未定义? [复制]

为啥这个递归函数返回正确的值? [复制]

为啥在按值返回时总是调用复制构造函数

为啥这个函数返回垃圾值

MongoDB:为啥这个存储的 JS 函数没有返回值?