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

lethe
44 声望7 粉丝