"output" 到底是什么?

What exactly constitutes an "output"?

假设我们在 Python 或 IDLE shell:

中有 运行 这行代码
print("hai") 

屏幕上出现以下内容:

hai

这对我来说似乎违反直觉,因为 print(arg) 是一个 void 函数,因此 returns None 在评估时总是; NoneType 是 python 中的一种数据类型,但当表达式求值为它时它不会显示在 window 上,而整数是:

5

使它出现在屏幕上(运行在 shell 上):

5

这种不显示的行为是否硬编码到 python 中只是 None 类型数据的一个特征?

我问这个问题是因为在所谓的“输出”方面似乎存在歧义,我担心这种歧义会使我的期中考试变得非常糟糕。例如,考虑这行代码……

…运行 在 shell:

5

使它出现在屏幕上:

5

…编译和运行:

5

屏幕上不显示任何内容。

--

表达式5 Python 中的整数 5 的计算结果很简单,但整数 5 是以与...

相同的方式输出的吗
print(5)

…在屏幕上输出“5”?以及 print(5) 函数调用评估的 NoneType 数据对象如何;那也会是输出吗?

我想我的问题的实际后果是这样的;假设有人问你这个问题:

这行代码的输出是什么?:

print(5)

正确答案是:

(一)。

5

None

(b).

5

(c).

None ?

另外,这个问题怎么样:

这行代码的输出是什么?:

5

正确答案是:

(一).

(b).

5

以上两个问题的答案取决于几件事:

正确答案取决于您的谈话对象。如果这是期中考试,我建议学究气。

实际上,输出可以是 return 值、打印到屏幕上的内容或网络请求等。在行业中,我们通常会因为上下文而知道差异。

尽管如此,您正在研究两个想法,一个是 returned 在堆栈上的东西,另一个是发出可见副作用的东西。

当你在期中看到问题 What is the output of this line of code?: print(5) 时,如果你想完成,你可以说 "This displays 5 on the stdout and returns None"。

如果你有多项选择题,你必须从上下文中推断出来。如果你有'5'和'None'作为两个不同的选项,请走到教授面前并在考试期间问问题"Do you mean what is sent to standard out or what is the return value"。

这是一个有点 UNIX 风格的描述,但稍作调整也适用于 Windows。

每个进程在第一次启动时,都有三个打开的​​文件描述符,它们由数字引用。文件描述符 0 已打开以供读取,通常称为标准输入。文件描述符 1 和 2 为写入打开,通常分别称为标准输出和标准错误。

"output",我们通常指的是"something written to standard output"。对于 print 函数,它的 目的 是将一些数据写入打开的文件描述符,默认情况下是标准输出。这是否可见取决于为标准输出打开的文件。

交互式解释器通常将您的终端作为其标准输出。 (请记住,Unix 中的许多东西都表示为文件,无论它们是否是存储在磁盘上的字节可寻址对象。)所以当你执行 print 时,它会在你的屏幕上写一些东西。

然而,交互式解释器 将您在提示符下键入的每个表达式的值写入标准输出,这使得它成为一个交互式解释器,而不仅仅是一个解释器.您在提示符下键入的任何表达式 foo 都将被视为 print(foo)。 (例外情况是 return 值是 None;作为 NoneType 的唯一值,函数 returns None 实际上并不提供任何信息,因此认为没有必要将其值打印到屏幕上。这个论点真的 仅当函数可以 only return None 时适用,因为 returning None 和,比如说, 1,但就输出而言,您仍然可以看到解释器将 1 或 nothing for foo(5) when it return s 1None.)

在决定是否输出"has" 时,最好将其输入到一个文件中,然后执行该文件有一个脚本。像 3 + 5 这样的简单表达式不会有任何隐式输出;脚本会将其评估为所谓的表达式语句,并生成但否则丢弃 8.

的结果