is 跟 == 的差別

== 是比對值

例如a變數及b變數皆為7,它們值是一樣的所以為True

a = 7
b = 7
print(a == b)
#True

is 是比對”物件”或者說是記憶體位置

用來判定它們倆雖然數值一樣,但其實是不同的東西,例如兩個人的身高雖然都是180,但是他們是不同的人。

a = 7
b = 7

print(a == b)       #True
print(a is b)       #True
print("a位置 = :", id(a), "b位置 = :", id(b))
#a位置 = : 2498409988528 b位置 = : 2498409988528
# 因a跟b都指向同一個記憶體位置,所以a is b 為True
# python為了省空間把a跟b都指向同個記憶體位置

list1 = [6, 7, 8]
list2 = [6, 7, 8]
print(list1 == list2)  # 值一樣為True
print(list1 is list2)  # 記憶體位置不一樣為Flase
print("list1的位置為:", id(list1), "list2的位置為:", id(list2))

print(list1[1] == a, list1[1] is a)
# True True,裡面的值和位置是一樣的

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *