Python中对象包含的三个基本要素:id(身份标识)、type(数据类型)和value(值)。
==是python标准操作符中的比较操作符,比较两个对象的value(值)是否相等,例如,
1 | a = 'cheesezh' |
1 | x = y = [4, 5, 6] |
同一类型且赋值相同的a和b,a==b结果都为True,而a is b结果如下,
1 | # a, b为数值类型 |
总结:
- 同一类型且赋值相同的变量a和b,a==b结果为True,即a和b的value相同;
- 同一类型且赋值相同的变量a和b,当a和b的数据类型是数值、字符串str和元组tuple时,a is b为True,即id相同;当a和b的数据类型是列表list,字典dict或集合set时,a is b为False,即id不同。
- 同一类型且赋值相同的变量a和b,id相同则value相同,即a is b则a == b;value相同但id不一定相同,即a==b但a is b不一定为True。
- 定义两个相同大小的可变类型变量,内存开辟两个空间,分别存储两个值,所以两个变量value相同但id不同;定义两个相同大小的不可变类型的变量,内存只开辟一个空间存储值,两个变量引用同一个空间内的值,所以两个变量value和id都相同。