不多说,直接上代码,看看三者的区别吧。
代码:
# 例子
a = [1, 2, 3]
b=a;
print(a)
print(b)
print(a is b)
print(b is a)
print(b==a)
print(id(a)==id(b))
print(a[:])
b=a[:]
print(b==a)
print(a is b)
查看一下输出结果:
[1, 2, 3]
[1, 2, 3]
True
True
True
True
[1, 2, 3]
True
False
通过结果,比对一下三者之间的区别。
比较id(obj), ==, is
符 号 | 描述 | 实例 |
---|---|---|
id | 获取的是对象在内存的地址 | id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False |
is | is 和is not 都是Python身份运算符,身份运算符用于比较两个对象的存储单元。is 是判断两个标识符是不是引用自一个对象。 | x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False, 即判断2个变量是否指向同一个对象。 |
== | ==是Python比较运算符,用于比对2个变量的具体值是否相等 | 即通过地址(id)指向的内存中的具体值 ,比如a=10,b=20,(a == b) 返回 False。 |
注意:
每一个类型只有一个类型对象。例如 type(100) ==type(0) ==type(2340)
总结:
- 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。
- id(obj)用于获取对象内存地址是否是同一个。