"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 键”
“我们 运行 编写代码有什么关系吗?自写作以来
TextEdit 中的代码行,编译它,然后 运行ning 它
与键入行相比,屏幕上会出现不同的内容
shell 中的代码并点击 return。"
正确答案取决于您的谈话对象。如果这是期中考试,我建议学究气。
实际上,输出可以是 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 1
或 None
.)
在决定是否输出"has" 时,最好将其输入到一个文件中,然后执行该文件有一个脚本。像 3 + 5
这样的简单表达式不会有任何隐式输出;脚本会将其评估为所谓的表达式语句,并生成但否则丢弃 8.
的结果
假设我们在 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 键”
“我们 运行 编写代码有什么关系吗?自写作以来 TextEdit 中的代码行,编译它,然后 运行ning 它 与键入行相比,屏幕上会出现不同的内容 shell 中的代码并点击 return。"
正确答案取决于您的谈话对象。如果这是期中考试,我建议学究气。
实际上,输出可以是 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 1
或 None
.)
在决定是否输出"has" 时,最好将其输入到一个文件中,然后执行该文件有一个脚本。像 3 + 5
这样的简单表达式不会有任何隐式输出;脚本会将其评估为所谓的表达式语句,并生成但否则丢弃 8.