is and ==
id()
函数是查看该对象所在内存地址。每个对象都有对应的内存地址,如:
is
用于判断两个变量引用对象是否为同一个, ==
用于判断引用变量的值是否相等。类似于Java中的equal()和==。反之,is not
用于判断两个变量是否引用自不同的对象,而 !=
用于判断引用变量的值是否不等。
在上面的例子中,我们分别打印了两种运算符的比较结果和内存地址,所以可以得出:
- 只要各对象的值一样,则 x == y 的值一定为True;
- 如果对象的类型为整数或字符串且值一样,则 x == y和 x is y 的值为True。(经测试浮点型数值,只有正浮点数符合这条规律,负浮点数不符合);
- list,tuple,dict,set值一样的话,x is y 则为False;
- x == y 与 x != y 的值相反,x is y 与 x is not y 的值相反。