我知道这听起来很愚蠢,但我正在读一本编程书,他们讨论了 print() 如何不返回任何内容(None)。他们使用这段代码来解释它。
a = 10
b = 15
c = print('a =', a, 'b=', b)
print(c)
Run Code Online (Sandbox Code Playgroud)
我明白了,c不是 print() 可以接受并打印它的任何数据类型。c只是有一个空值,因为它不是有效的数据类型。
但数据类型是什么c?None是什么数据类型?如果c不是字符串、整数、浮点数,也不是布尔值,那么它是什么?None不应该是它自己的数据类型吗?
PS 如果我转到 python 并分配一个变量None并打印它,它会识别数据值并且不会吐出名称错误。所以理论上来说, *None 是它自己的数据类型,对吧?
哦,为什么Python不转换c成字符串然后打印呢?
None是(就像Python中除了关键字之外的其他所有东西一样)一个对象。这意味着它是一个类的实例(或者如果您愿意的话可以键入)。None是 的一个实例NoneType,如果执行以下操作,您可以找到它:
print(type(None)) # <class 'NoneType'>
Run Code Online (Sandbox Code Playgroud)
所以是的,NonePython 中有自己的数据类型。
该类的特殊之处在于它只有一个实例:None。是的,为该类定义了一个字符串表示形式NoneType。当你这样做时,字符串表示形式是"None",你会看到:(在这种情况下都是等价的)
print(None)
print(str(None))
print(repr(None))
Run Code Online (Sandbox Code Playgroud)
附:
还值得强调的是,这None实际上是一个单例。这意味着该类只有一个实例NoneType。这就是为什么您可以使用 进行身份比较None,即:
if my_variable is None:
...
Run Code Online (Sandbox Code Playgroud)
与这样的相等比较(当然也有效)相反:
if my_variable == None:
...
Run Code Online (Sandbox Code Playgroud)
当任何函数(包括诸如 之类的内置函数print)没有显式 return 语句或空语句(例如return后面没有任何内容)时,它们总是隐式返回该一个特殊None对象。
| 归档时间: |
|
| 查看次数: |
539 次 |
| 最近记录: |