我們在日常的工作過程中,經常會使用到比較符 is 或者 == 寫表達式對兩個對象進行判斷操作,那麼究竟什麼情況下用 is 什麼情況下用 == 呢,所以今天我們就來簡單認識一下這兩個比較符吧。
比較兩個對象的值是否相等 ( == )
當我們需要對兩個對象的值是否相等進行判斷的時候,我們用到的運算符就是 ==
a = 100b = 100c = 200a == bOut[11]: Truec == aOut[12]: Falsepython的緩存機制
在認識 is 運算符之前我們先來簡單了解一下python的緩存機制
整數對象
python中,對於(-5 ... 256)之間的整數,系統已經提前分配好了內存地址,所以在使用到這期間的整數對象時,會直接讀取內存池中對應的內存地址,不會創建新的對象。而對於其他不在這期間的整數對象,python會在內存池中為其分配一塊小於256k大小的內存,每次的賦值引用都是創建不同的對象,生成不同的內存地址。
a = 256 b = 256id(a) == id(b)Out[15]: Truea = 257b = 257id(a) == id(b)Out[18]: False字符串對象
單個的ASCII字符或者不間斷的單個ASCII字符串的對象創建,python會創建一個內存來儲存這個字符串,如果字符串已存在內存池裡面,就不會再去創建新的對象,再次賦值別的變量也只是調用的是同一個對象,但如果是間斷的ASCII字符串對象創建,那麼就會生成不同的對象內存,不會發生已存在內存池就不創建新的內存地址。
a ='abc'b = 'abc'id(a) == id(b)Out[27]: Truea = 'a bc'b = 'a bc'id(a) == id(b)Out[30]: False比較兩者是否為同一個對象 ( is )
當我們需要比較兩個對象是否為同一個對象的時候,用的比較符就是 is
is 相當於 id(obj) == id(obj)
a = 1000b = 1000a is bOut[37]: Falseid(a) == id(b)Out[38]: Falsea = 1000b = aa is bOut[41]: Trueid(a) == id(b)Out[42]: True尼採曾經說過:「每一個不曾起舞的日子,都是對生命的辜負。」