首页 > 解决方案 > 自动化无聊的东西中的无值/代码

问题描述

文本说如下:

在 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 语句(即,只有 return 关键字本身),则返回 None。

我想我理解 None 是什么,但我不理解代码。为什么它spam等于None它被分配的时间print('Hello!')?当我spam在分配后立即进入交互式外壳时,它什么也不返回。我有一种感觉,这是因为在调用并返回一个值Hello!时会立即忘记该参数,但是如果我已将其定义为传递参数的函数,它是否不应该总是返回?print()spamprint()Hello!Hello!

标签: pythonfunctionnonetype

解决方案


为了添加注释并更清楚,您的print()函数打印 'Hello!'到屏幕并返回 None到程序。打印和返回不是一回事——打印是给用户的,返回是给程序的。打印只进入屏幕并且(通常)不能被程序进一步使用。返回的值可以存储在变量中,例如spam,并进一步使用。

打印和返回之间的区别非常重要,以至于 Python 标准是,如果一个函数打印一些东西,它不应该返回除 之外None的任何值,如果函数返回一个值,它不应该打印任何东西。许多其他语言(最臭名昭著的 C)没有遵循这个标准,Python 也没有始终如一地遵循这个标准,但这种区别确实有助于 Python 的清晰性。如果您想进一步研究这个概念,请搜索编程中的“副作用”。


推荐阅读