在Python中,关键字None
代表空值,也就是“什么都没有”的意思。None和数字 0、False、空字符串都不同,None是NoneType类型的单例对象,而且只有None能够是NoneType类型。使用内置函数type
可以查看标识符的类型:
>>> type(None)
<class 'NoneType'>
复制代码
在Python中,None是一个单例对象,即有且仅有一个None对象:
>>> a = None
>>> b = None
>>> a is b
True
复制代码
你想过为什么判断一个对象是否为None
要用is
而不是==
吗?
在Python中,表达式a == b
其实等价于a.__eq__(b)
。也就是说,==
运算符背后调用的是左边操作数对象的__eq__()
方法,而此方法是可以被重载的:
class Foo(object):
def __eq__(self, other):
return True
a = Foo()
print(a == None) # True
print(a is None) # False
复制代码
所以说,使用is
才能真正判断一个变量名是否指向内存中唯一的None
对象。而等号只用于判断值是否相同,并不判断他们的对象标识符是否相同(使用内置函数id
可以获取对象的对象标识符)。
如果把None转换为布尔值,是真还是假呢:
if None:
print("None is True.")
else:
print("None is False.")
复制代码
上面这段程序的结果是False
。所以None
在显式或者隐式被转换为布尔值时,其值为False
。
None
的用处:
- 表示空值,例如:
a = None
使变量a指向None
对象,表示这个变量是空的,类似C和C++中null
。 - Python中的函数如果没有返回语句,默认返回
None
,表示没有返回值,当然也可以显式地返回None
:return None
。
Python交流学习群:532232743
微信公众号:小鑫的代码日常