==并且在python中

fo_*_*x86 12 python

自从我开始学习python以来已经过了几天,此时我偶然发现了==is.来自java背景我假设==通过对象id和is值进行比较,但是这样做

 >>> a = (1,2)
 >>> b = (1,2)
 >>> a is b
 False
 >>> a == b
 True
Run Code Online (Sandbox Code Playgroud)

好像is相当于java ==和python ==相当于java的equals().这是考虑is和之间区别的正确方法==吗?或者有一个警告?

Ign*_*ams 16

is检查两个操作数是否是同一个对象.==调用__eq__()左操作数,传递右边.通常,此方法实现相等性比较,但可以编写一个将其用于其他目的的类(但它永远不应该).

需要注意的是is,并==会给出一些实现(-1和256(含)之间的字符串文字,整数)为特定对象相同的结果,但这并不意味着运营商应考虑在这些情况下替代.