c - 為什么python中值相等的兩個(gè)變量會(huì)指向同一個(gè)內(nèi)存地址?
問(wèn)題描述
http://www.cnblogs.com/lolein... 下面是這個(gè)文章里面所演示的代碼,
>>> a=1>>> b=1>>> id(a)40650152>>> id(b)40650152>>> a=2>>> id(a)40650140
我有點(diǎn)費(fèi)解的就是,按道理a和b完全就不是同一個(gè)變量,那么理論上他們無(wú)論值是什么,都應(yīng)該是放在兩個(gè)不同的內(nèi)存空間啊,為什么他們相等的時(shí)候就放在了同一個(gè)內(nèi)存空間呢?難道是python的運(yùn)行時(shí)環(huán)境會(huì)自動(dòng)判斷他們的值,如果相同就放到同一個(gè)內(nèi)存空間,為的是節(jié)省內(nèi)存占用嗎?
問(wèn)題解答
回答1:Python實(shí)現(xiàn)int的時(shí)候有個(gè)小整數(shù)池。為了效率, Python首先在內(nèi)心里創(chuàng)建出這些整數(shù),然后復(fù)用了這部分整數(shù),創(chuàng)建一個(gè)值為1的int,其實(shí)直接從這個(gè)池里拿出1。一般是-5到257。你弄個(gè)1000 500啥的看看。就不會(huì)這樣了。看看這個(gè):python整數(shù)對(duì)象實(shí)現(xiàn)
回答2:為了性能上的優(yōu)化而使用了常量池。而且這也不是 python 獨(dú)有的,很多其他語(yǔ)言也使用了類(lèi)似的技巧。
回答3:https://github.com/python/cpy...
相關(guān)文章:
1. angular.js - 輸入郵箱地址之后, 如何使其自動(dòng)在末尾添加分號(hào)?2. 管理員信息修改時(shí)的密碼問(wèn)題3. javascript - JS 里面的 delete object.key 到底刪除了什么?4. android - RxJava 中有根據(jù)條件執(zhí)行不同函數(shù)的操作符嗎?5. mysql - 電商如何存儲(chǔ)營(yíng)業(yè)額數(shù)據(jù)6. javascript - 后臺(tái)管理系統(tǒng)左側(cè)折疊導(dǎo)航欄數(shù)據(jù)較多,怎么樣直接通過(guò)搜索去定位到具體某一個(gè)菜單項(xiàng)位置,并展開(kāi)當(dāng)前菜單7. javascript - html5的data屬性怎么指定一個(gè)function函數(shù)呢?8. javascript - 如何使用nodejs 將.html 文件轉(zhuǎn)化成canvas9. html5 - 為什么使使用vue cli 腳手架,post-css 沒(méi)有自動(dòng)對(duì)css3屬性自動(dòng)添加瀏覽器前綴呢?10. java如何生成token?
