假设我们已经在Python或IDLE shell中运行了以下代码行:
print("hai")
Run Code Online (Sandbox Code Playgroud)
屏幕上显示以下内容:
hai
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎违反直觉,因为print(arg)是一个void函数,因此在求值时始终返回None;NoneType是python中的数据类型,但是当表达式对其求值时,它不会显示在窗口上,而整数是:
5
Run Code Online (Sandbox Code Playgroud)
使它显示在屏幕上(在shell上运行):
5
Run Code Online (Sandbox Code Playgroud)
是否将此非显示行为硬编码到python中,仅是NoneType数据的功能?
我之所以要问这个问题,是因为所谓的“输出”似乎存在歧义,而且我担心这种歧义会使我的中期工作变得相当灾难性。例如,考虑以下代码行…
…在shell中运行:
5
Run Code Online (Sandbox Code Playgroud)
使它出现在屏幕上:
5
Run Code Online (Sandbox Code Playgroud)
…编译并运行:
5
Run Code Online (Sandbox Code Playgroud)
没有使任何东西出现在屏幕上。
-
表达式5在Python中的计算结果为整数5,但整数5的输出结果与...相同
print(5)
Run Code Online (Sandbox Code Playgroud)
…在屏幕上输出“ 5”?以及print(5)函数调用求值的NoneType数据对象如何?那也将是输出吗?
我想我的问题的实际后果是:说有人问你这个问题:
这行代码的输出是什么?
print(5)
Run Code Online (Sandbox Code Playgroud)
正确的答案是:
(一种)。
5
没有
(b)。
5
要么
(C)。
没有 ?
从好的角度来说,这个问题怎么样:
这行代码的输出是什么?
5
正确的答案是:
(一种)。
要么
(b)。
5
以上两个问题的答案取决于两点:
“输出到底是什么构成的?评估值是输出吗?还是输出的字面意思就是:按回车键后屏幕会是什么样?
“我们如何运行代码很重要?由于在TextEdit中编写了代码行,然后对其进行编译然后运行,与在外壳中键入代码行并按回车键相比,屏幕上出现的内容有所不同。”