不多說,直接上代碼,看看三者的區別吧。
代碼:
# 例子
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)用於獲取對象內存地址是否是同一個。