在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,这里有各路高手等着你~

580

被折叠的 条评论
为什么被折叠?



