【发布时间】:2019-10-18 11:24:10
【问题描述】:
文字内容如下:
在 Python 中有一个名为 None 的值,它表示没有值。 None 是 NoneType 数据类型的唯一值。 (其他编程语言可能将此值称为 null、nil 或 undefined。)就像布尔 True 和 False 值一样,None 必须用大写 N 键入。
当您需要在变量中存储一些不会与实际值混淆的东西时,这种没有值的值会很有帮助。一个使用 None 的地方是作为 print() 的返回值。 print() 函数在屏幕上显示文本,但它不需要像 len() 或 input() 那样返回任何内容。但由于所有函数调用都需要计算返回值,因此 print() 返回 None。要查看实际情况,请在交互式 shell 中输入以下内容:
>>> spam = print('Hello!')
Hello!
>>> None == spam
True
在幕后,Python 将 return None 添加到任何没有 return 语句的函数定义的末尾。这类似于 while 或 for 循环如何以 continue 语句隐式结束。此外,如果您使用没有值的 return 语句(即仅返回关键字本身),则返回 None。
我想我理解 None 是什么,但我不理解代码。为什么spam 在分配为print('Hello!') 时等于None?当我在分配后立即将spam 输入交互式shell 时,它什么也不返回。我有一种感觉,这是因为当调用 print() 并返回一个值时,参数 Hello! 会立即被遗忘,但如果我将 spam 定义为 print() 函数并传递参数 Hello! 应该它并不总是返回Hello!?
【问题讨论】:
-
因为
print返回None。'Hello!'是您传递给它的参数,它不会返回它;大多数函数不返回它们的参数,因为调用者已经拥有它们。 -
@jonrsharpe 但是
print('Hello!')不返回Hello!? -
没有。正如我告诉过你的,你的实验清楚地表明,在它打印之后,它返回
None。 -
@RoryDaulton 感谢您了解我的困惑。我现在意识到我完全误读了这一章并且没有理解其中的区别。如果您愿意将您的评论作为答案,我会接受。
-
不客气。我已将我的评论移至答案,并添加了一些小的补充。