「foo is None」和「foo == None」的區別是:判斷符的不同,is判斷符用於比較兩個對像是否是同一個對象,==判斷符用於比較兩個物件的值是否相等。
foo is None 和foo == None的區別
if foo is None: pass if foo == None: pass
這是兩種不同的用法,它們之間的差別是什麼呢?
解答案:
Python中變數本身不儲存其值,變數賦值事實上是將變數引用指向記憶體中快取的對象本身,例如:
a=5 b=5
看似兩個變數實際指向同一個對象,此時a==b,a is b都為True,==運算子比較兩個物件的值, is 則判斷兩個變數是否指向同一個引用,想判斷是否同一物件,用函數id()即可顯示出實際物件的識別(一個整數),此時id(a),id(b),id( 5)的標識符都是一致的。
同理,如果foo為None時,事實上是將foo指向None物件的實際標識符,此時用id()顯示任何為None的變數的標識,會發現與id(None)的結果相同。
題目中的結果一樣,但語意不同,就看你是想表達“foo與None為同一對象”,還是“foo值與None值相等”。
以上是「foo is None」和「foo == None」有什麼區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!