Pythonis not 操作符--由两个关键字is 和not 组成--测试左和右操作数是否指向不同的对象--在这种情况下它返回True 。如果它们指的是同一个对象,则返回False 。例如,表达式[1, 2, 3] is not [1, 2, 3] 返回True ,因为尽管两个列表都是相等的,但它们是内存中的两个不同对象。
下面的例子显示,两个列表 lst_1 和lst_2 并没有什么不同 lst_1 != lst_2 ,但是当测试负的身份时lst_1 is not lst_2 ,它们仍然是不同的对象。
>>> lst_1 = [1, 2, 3]
>>> lst_2 = [1, 2, 3]
>>> lst_1 is not lst_2
True
>>> lst_1 != lst_2
False
'is not'和'!='运算符的区别在于,'is not'比较的是两个对象的对象引用,而'!='比较的是两个对象的语义相等。
身份操作符
Python有两个身份运算符。 is 和is not 。它们用于检查两个值或变量是否位于相同的内存位置,即指代内存中的同一个对象。然而,如果两个变量是相等的,这并不意味着它们是相同的。例如,两个列表 [1, 2, 3] 和[1, 2, 3] 可能是不同的对象(不完全相同),但它们的值是相等的。
| 操作符 | 意义 | 例子 |
|---|---|---|
is | 如果两个操作数指的是内存中的同一个对象,则返回True ,否则返回False 。 | x is True |
is not | 如果两个操作数在内存中指的是同一个对象,则返回False ,否则返回True 。 | x is not True |