您的位置:首页 > 编程语言 > Python开发

python-"is" v.s. "=="

2016-12-26 15:44 417 查看
先说结论:“==”只是判断两个变量是否相等,“is”则判断两个变量是否是同一对象。

看例子:

>>> int_a = 1
>>> int_b = 1
>>> int_a == int_b
True
>>> int_a is int_b
True

>>> int_c = 10000
>>> int_d = 10000
>>> int_c == int_d
True
>>> int_c is int_d
False


这是为什么呢?再看看这四个变量的id:

>>> id(int_a)
1908736464
>>> id(int_b)
1908736464
>>> id(int_c)
2471603994928
>>> id(int_d)
2471603994864


可以看到
int_a
int_b
的id是相同的,但是
int_c
int_d
是不同的,至于为什么id不同,就牵扯到在《 python-对象之hashable&unhashable与immutable&mutable》里面提到的“解释器在对值很小的int和很短的字符串的时候做了一点小优化,只分配了一个对象”。由此看出,”is”实际上比较的是id,可以理解为对象的地址,”==”比较的是值,就算两个变量存储位置不同,只要值相同,”==”就会返回True。所以说”is”比”==”更加严格,“==”只是表示这两个变量相等,“is”则表示这两个变量是同一个对象。

补充一句:判断一个实例是不是某对象的实例,可以使用
isinstance(instance_name, class_name)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐