文章詳情頁
c - 為什么python中值相等的兩個變量會指向同一個內(nèi)存地址?
瀏覽:104日期: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. apache web server 怎么限制某一個網(wǎng)站對服務(wù)器資源的占用?2. docker網(wǎng)絡(luò)端口映射,沒有方便點的操作方法么?3. docker start -a dockername 老是卡住,什么情況?4. java中返回一個對象,和輸出對像的值,意義在哪兒5. css3 - 純css實現(xiàn)點擊特效6. mysql - 在不允許改動數(shù)據(jù)表的情況下,如何優(yōu)化以varchar格式存儲的時間的比較?7. 安全性測試 - nodejs中如何防m(xù)ySQL注入8. docker - 各位電腦上有多少個容器啊?容器一多,自己都搞混了,咋辦呢?9. javascript - 關(guān)于apply()與call()的問題10. html5 - 請問現(xiàn)在主流的前端自動化構(gòu)建工具是哪個?
排行榜

熱門標(biāo)簽