【发布时间】:2019-03-12 19:11:13
【问题描述】:
假设我们在 Python 或 IDLE shell 中运行了这行代码:
print("hai")
屏幕上出现以下内容:
hai
这对我来说似乎违反直觉,因为 print(arg) 是一个 void 函数,因此在评估时总是返回 None; NoneType 是 python 中的一种数据类型,但是当表达式对其求值时它不会显示在窗口上,而整数是:
5
让它出现在屏幕上(在 shell 上运行):
5
这种不显示的行为是否被硬编码到 python 中,只是 NoneType 数据的一个特征?
我之所以问这个问题,是因为在什么被认为是“输出”方面似乎存在歧义,我担心这种歧义会让我的期中考试变得非常糟糕。例如,考虑这行代码……
…在 shell 中运行:
5
让它出现在屏幕上:
5
…编译并运行:
5
不让任何东西出现在屏幕上。
--
表达式 5 在 Python 中简单地计算为整数 5,但整数 5 是否以与...相同的方式输出...
print(5)
…在屏幕上输出“5”?以及 print(5) 函数调用评估为的 NoneType 数据对象怎么样?那也会是输出吗?
我想我的问题的实际影响是这样的;说有人问你这个问题:
这行代码的输出是什么?:
print(5)
正确答案是:
(一)。
5
无
(b).
5
或
(c).
无 ?
为了更好的衡量,这个问题怎么样:
这行代码的输出是什么?:
5
正确答案是:
(a).
或
(b).
5
上述两个问题的答案取决于几件事:
“究竟是什么构成了输出?评估值是输出吗? 或者输出只是字面意思:之后屏幕会是什么样子 我按回车键”
“我们如何运行代码重要吗?自从写 TextEdit中的代码行,编译它,然后运行它 与键入行相比,屏幕上出现的内容不同 shell 中的代码并点击返回。”
【问题讨论】:
-
交互式解释器只是特例不显示返回值
None,因为作为一个单例值它不包含任何信息。 -
“输出”一般是指向特定的打开文件描述符写入东西,即fd 1(通常称为“标准输出”)。这是一个与返回值完全分开的概念,尽管解释器将非
None返回值写入标准输出的做法使两者之间的界限有些模糊。 -
当我读到“这行代码的输出是什么?”时,我认为它的意思是“打印到屏幕上的是什么?”。如果他们想要返回值,他们(希望)会问“这行代码返回了什么?”。
-
@0x5453 我们经常用“这个函数的输入输出是什么”这句话来谈论参数和返回值。
-
打印和日志记录通常对实际程序没有影响,只是向用户/管理员显示信息。对我来说,输出似乎是一个通用词,取决于您的参考点。例如,如果您是一个正在查看运行程序的控制台的人,那么输出可能是打印出来的任何内容。但是,如果您是程序的一部分,那么输出通常是函数的返回值。
标签: python python-idle