Python判斷is與==


python判斷條件中的兩個典型語句is和==

==就是等值判斷,判斷兩個對象的內容是否相等;

而is是身份判斷符,事實上是對兩個對象是否為同一對象的判斷;

因此其本質是對兩個對象id進行的判斷,即對象的內存地址;

因此個人覺得is的強度要強於==

我們知道在python中,變量不需要定義,在申請內存空間時是相對一視同仁的,根據需要存儲的數據的實際數據類型進行區分。

進行一個測試

 
        
a=1;
b=1;
if(a is b):
print("a is b");
print(id(a));
print(id(b));

測試結果



可以看見兩個對象a和b,id相同,因此is判斷成立;實際上我認為這是一種節約內存空間的策略?(相同內容對象指向同一地址)

但並非內容相同的對象其地址就一定相同,再上一個例子:

a=[1,2,3];
b=[1,2,3];
if(a is b):
print("a is b");
else:
print("a is not b");
print(id(a));
print(id(b));



運行結果:

可以發現對於list對象,即便二者內容一致,其id也是不相同的,顯然is判斷也是不成立的。

事實上相同內容整數和字符串對象申請內存空間時其ID是一致的,其他的並不相同。

 

 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM