Python中is和==的關系
is
判斷兩個變量是不是指的是同一個內存地址,也就是通過id()
函數判斷
==
判斷兩個變量的值是不是相同
a = [1, 2, 3, 4]
b = [1, 2, 3, 4]
print(id(a)) # 2298268712768
print(id(b)) # 2298269716992
print(a is b) # False
print(a == b) # True
這里有一種特殊情況:
a = 1
b = 1
print(id(a)) # 140705217569576
print(id(b)) # 140705217569576
print(a is b) # True
print(a == b) # True
原理是:當我們已有個變量是小整數或小段的字符串,再次建立相同的小整數或小字符串時,python不會重新開辟一個內存空間,而是用指針將這個變量指向我們已經創建的內存空間,這個屬于python內部的優化機制