1. is vs ==
想要弄清楚is None和==None的区别,首先要清楚==和is的区别。==和is的区别如下:
is
"is"运算符主要是用来比较两个操作对象的引用是否是同一个,指向的是否是同一块内存,比较的是对象的id。
==
==运算符主要是用来比较两个操作对象之间是否相等,比较的是值(Value)相等,默认会调用对象的__eq__()方法。
测试环境为Python 3.6.9,测试如下:
>>> a = [1]
>>> b = [1]
>>> c = a
>>> id(a)
140466547692424
>>> id(b)
140466547695112
>>> id(c)
140466547692424
>>> a == b
True
>>> a is b
False
>>> a == c
True
>>> a is c
True
注:id()函数返回对象的唯一标识符,用于获取对象的内存地址。
2. is None vs == None
清楚了==与is的区别,就知道"==