None
是python中的一个常量,他有自己的数据类型NoneType
,表示一个空对象,类似js中的null
None
和任意对象比较都是False
,除了他自己本身""
、[]
、 {}
、()
、None
、 0
、False
# 尽量用
if not obj:
pass
# 尽量不要用
if obj != []:
pass
is None
与 == None
弄懂这两个的区别,首先我们需要先弄懂 is
与 ==
is
与 ==
==
则用来比较值是否相同==
来进行比较的时候,他其实是调用了一个魔术方法__eq__
,这个方法我们可以重写,且函数返回的值就是比较后的值,我们可以看下面的例子class Foo():
def __eq__(self, __o: object) -> bool:
return True
a = Foo()
b = None
print(a == b) # True
print(a == "c") # True
print(b is None) # True
print(b == None) # true
print(a is b) #False
None
进行比较的时候,一般用is
,如果变量指向的是None,那么他们最终的地址一定相同is None
和 == None
返回的结果是相同的,如果__eq__
方法被重写了,那么导致的结果可能就不同了