pythonis 與== 區別:
is用於判斷兩個變數引用物件是否為同一個, == 用來判斷引用變數的值是否相等。
a is b 相當於 id(a)==id(b),id() 能夠取得物件的記憶體位址。 (推薦學習:Python影片教學)
如果a=10;b=a; 則此時a 和b 的記憶體位址一樣的;
但當a =[1,2,3]; 另b=a[:] 時,雖然a 和b 的值一樣,但記憶體位址不一樣。
如果此時定義a=10、b=10, 然後再對比a is b 會發現回傳的結果是True,這是因為在Python 中會實作建立一個小型的整形池,範圍為[ -5,256],為這些整形開啟好記憶體空間,當程式碼中定義該範圍內的整形時,不會再重新分配記憶體位址。
而我在Pycharm 中進行測試:
#coding=utf-8 a=100000000000; b=100000000000; print a is b
結果:
True
後來查了資料才發現是: Python出於對效能的考慮,但凡是不可變對象,在同一個程式碼區塊中的對象,只有是值相同的對象,就不會重複創建,而是直接引用已經存在的對象。
更多Python相關技術文章,請造訪Python教學欄位學習!
以上是python is和==的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!