学习Python中的 "is not" 操作符

142 阅读1分钟

Pythonis not 操作符--由两个关键字isnot 组成--测试左和右操作数是否指向不同的对象--在这种情况下它返回True 。如果它们指的是同一个对象,则返回False 。例如,表达式[1, 2, 3] is not [1, 2, 3] 返回True ,因为尽管两个列表都是相等的,但它们是内存中的两个不同对象。

下面的例子显示,两个列表 lst_1lst_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有两个身份运算符isis not 。它们用于检查两个值或变量是否位于相同的内存位置,即指代内存中的同一个对象。然而,如果两个变量是相等的,这并不意味着它们是相同的。例如,两个列表 [1, 2, 3][1, 2, 3] 可能是不同的对象(不完全相同),但它们的值是相等的。

操作符意义例子
is如果两个操作数指的是内存中的同一个对象,则返回True ,否则返回Falsex is True
is not如果两个操作数在内存中指的是同一个对象,则返回False ,否则返回Truex is not True