Pythonis 关键字测试左和右操作数是否指的是同一个对象--在这种情况下,它返回True 。如果它们不是同一个对象,即使这两个对象相等,它也会返回False 。例如,表达式[1, 2, 3] is [1, 2, 3] 返回False ,因为尽管两个列表都是相等的,但它们是内存中的两个独立对象。
下面的例子显示,当测试平等性 时,两个列表 l1 和l2 是相同的l1 == l2 ,但当测试同一性时l1 is l2 ,它们指向内存中的另一个对象。
>>> l1 = [1, 2, 3]
>>> l2 = [1, 2, 3]
>>> l1 is l2
False
>>> l1 == l2
True
'is' 和 '==' 操作符之间的区别是:'is' 是比较两个对象的身份,而 '==' 是比较两个对象的相等。
对于所有内置的Python对象,如字符串、列表、数据集、函数都是如此。
平等性来自于同一性,也就是说,如果 **x is y**,则 **x==y**.
Python是操作符 字符串
在两个字符串上的操作符is 可以检查这两个字符串是否指代内存中的同一个对象。由于字符串是不可变的--即它们_在创建后不能被修改--_同一个字符串在内存中总是由同一个对象表示。因此,对于字符串来说,身份与平等是一样的,即s1 == s2 与s1 is s2 。这比在内存中持有两个相等的字符串对象更有效率。如果字符串不能被改变,所有的变量可以简单地引用同一个不可变的字符串对象。
下面的例子显示了如何独立地 "创建 "字符串变量真正地引用内存中的同一个对象。
>>> s1 = 'hi'
>>> s2 = 'hi'
>>> s1 is s2
True
因此,相等的字符串是相同的字符串,相同的字符串是相等的字符串。
>>> s1 == s2
True
Python是操作符重载
The postPython is Operatorfirst appeared onFinxter.