is 与 == 的根本区别
==
比较操作符:用来比较两个对象是否相等,value
做为判断因素is
同一性运算符:比较判断两个对象是否相同,id
做为判断因素
可变对象
>>> [] is []
False
>>> [] == []
True
>>> {} is {}
False
>>> {} == {}
True
首先对象类型不同is
肯定会返回False
其次当对象类型相同 同为可变对象时 ( 即列表,字典 ) ,即使值相等 结果也是
False
原因是他们
id
不相等, 如下
>>> a = []
>>> b = []
>>> id(a)
62420192
>>> id(b)
59758512
不可变对象
那么对象类型相同 同为不可变对象时 ( 即数字,字符串,元组 ),值相等则结果为True
>>> () == ()
True
>>> () is ()
True
>>> "" == ""
True
>>> "" is ""
True
>>> 1 == 1
True
>>> 1 is 1
True
>>> None == None
True
>>> None is None
True
原因是它们id
值一样
>>> a = 1
>>> b = 1
>>> id(1)
491022464
>>> id(a)
491022464