python 运算符 is 与 is not 的理解
is 與 is not 的理解
is 是判斷兩個標識符是不是引用同一個對象, 類似于id(a) = id(b) ,如果引用的是同一個對象則返回 True,否則返回 False
注意python 中id()函數(shù)是獲取對象的內存地址
is not?是判斷兩個標識符是不是引用自不同對象, 類似?id(a) != id(b)。如果引用的不是同一個對象則返回結果 True,否則返回 False。
下面舉個例子說下
定義2個列表a和b 如下
a = [1, 2, 3] b = [1, 2, 3]
打印下a is b 的結果
a = [1, 2, 3]
b = [1, 2, 3]
print(a is b) # 打印結果為False
說明列表a 和列表b 的內存地址不相同
下面在使用下is not?
a = [1, 2, 3]
b = [1, 2, 3]
print(a is not b) # 打印結果為True
?
-------------------------------------------------------下面是自己疑惑的知識補充----------------------------------------------------------------------------------------
看到這相比大家已經(jīng)理解的is 與 is not ,這里我沒有使用int 舉例子,因為我發(fā)現(xiàn),使用int 的時候與網(wǎng)上說的有些不一樣的地方
比如,使用開發(fā)工具為pycharm, python 版本為3x
a = 500000
b = 500000
print(a is b) # 打印結果為True
打印截圖
?
很多人說int 值有范圍大于256 a is b 就返回false ,但是這個50萬這個值很大了吧,換是True, 百度了下有人說pycharm 對int值有優(yōu)化,
那下面使用float 值在看下
a = 3.14
b = 3.14
print(a is b) # 打印結果為True
打印結果仍然為True,按理說應該為false 來的,
下面是個人參考部分人觀點認為 : python 為了性能考慮,對于值相同的不可變對象,都不會重新創(chuàng)建新的地址來存儲對象,而對于可變對象,則會重新開辟空間
這樣很很容易理解了.
總結
以上是生活随笔為你收集整理的python 运算符 is 与 is not 的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深圳单位帮员工补缴社保需要什么手续?
- 下一篇: 公积金交多少钱啊?