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,裡面的值和位置是一樣的