一、本質(zhì)區(qū)別
符號 | 區(qū)別 |
---|---|
== | 操作符測試值的相等性拉庵; |
is | 表達(dá)式測試對象的一致性,即是否指向同一個對象套蒂。 |
二钞支、實(shí)例說明
1、情況①
list1 = [1, 2, 3]
list2 = [1, 2, 3]
print(list1 == list2, list1 is list2) # True False
輸出結(jié)果:
True False
list1和list2通過了”==”測試 (他們的值相等操刀,因?yàn)樗鼈兊乃袃?nèi)容都是相等的)烁挟,但是is測試卻失敗了(它們是兩個不同的對象,因此有不同的內(nèi)存區(qū)域)
2骨坑、情況②
s1 = 'python'
s2 = 'python'
print(s1 == s2, s1 is s2) # True True
輸出結(jié)果:
True True
說明:或許你會驚訝撼嗓,覺得這組得到的結(jié)果應(yīng)該和上組得到的結(jié)果一致。事實(shí)上,內(nèi)存中只有一個字符串’spam’供s1和s2共享且警。這個主要是因?yàn)樵赑ython內(nèi)部會暫時存儲并重復(fù)使用短字符串粉捻。也就是說當(dāng)創(chuàng)建短字符串的時候會首先到字符串的內(nèi)存區(qū)域查找是否已經(jīng)有該字符串相等的值存在,如果有則會指向該內(nèi)存區(qū)域斑芜,否則重新開辟內(nèi)存肩刃。類似java中的常量池概念。
三押搪、贈語
不識廬山真面目树酪,只緣身在此山中。