文章詳情頁
c - 為什么python中值相等的兩個變量會指向同一個內(nèi)存地址?
瀏覽:111日期:2022-07-30 11:48:25
問題描述
http://www.cnblogs.com/lolein... 下面是這個文章里面所演示的代碼,
>>> a=1>>> b=1>>> id(a)40650152>>> id(b)40650152>>> a=2>>> id(a)40650140
我有點費解的就是,按道理a和b完全就不是同一個變量,那么理論上他們無論值是什么,都應(yīng)該是放在兩個不同的內(nèi)存空間啊,為什么他們相等的時候就放在了同一個內(nèi)存空間呢?難道是python的運行時環(huán)境會自動判斷他們的值,如果相同就放到同一個內(nèi)存空間,為的是節(jié)省內(nèi)存占用嗎?
問題解答
回答1:Python實現(xiàn)int的時候有個小整數(shù)池。為了效率, Python首先在內(nèi)心里創(chuàng)建出這些整數(shù),然后復(fù)用了這部分整數(shù),創(chuàng)建一個值為1的int,其實直接從這個池里拿出1。一般是-5到257。你弄個1000 500啥的看看。就不會這樣了。看看這個:python整數(shù)對象實現(xiàn)
回答2:為了性能上的優(yōu)化而使用了常量池。而且這也不是 python 獨有的,很多其他語言也使用了類似的技巧。
回答3:https://github.com/python/cpy...
相關(guān)文章:
1. 為什么我ping不通我的docker容器呢???2. nignx - docker內(nèi)nginx 80端口被占用3. python3.x - python連oanda的模擬交易api獲取json問題第五問4. angular.js - angular內(nèi)容過長展開收起效果5. java - SSH框架中寫分頁時service層中不能注入分頁類6. 關(guān)于docker下的nginx壓力測試7. docker鏡像push報錯8. javascript - js代碼獲取驗證碼倒計時問題9. dockerfile - [docker build image失敗- npm install]10. html5 - 百度echart官網(wǎng)下載的地圖json數(shù)據(jù)亂碼
排行榜

熱門標(biāo)簽