文章詳情頁
c - 為什么python中值相等的兩個變量會指向同一個內存地址?
瀏覽:123日期: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完全就不是同一個變量,那么理論上他們無論值是什么,都應該是放在兩個不同的內存空間啊,為什么他們相等的時候就放在了同一個內存空間呢?難道是python的運行時環境會自動判斷他們的值,如果相同就放到同一個內存空間,為的是節省內存占用嗎?
問題解答
回答1:Python實現int的時候有個小整數池。為了效率, Python首先在內心里創建出這些整數,然后復用了這部分整數,創建一個值為1的int,其實直接從這個池里拿出1。一般是-5到257。你弄個1000 500啥的看看。就不會這樣了。看看這個:python整數對象實現
回答2:為了性能上的優化而使用了常量池。而且這也不是 python 獨有的,很多其他語言也使用了類似的技巧。
回答3:https://github.com/python/cpy...
相關文章:
1. docker內創建jenkins訪問另一個容器下的服務器問題2. 如何解決Centos下Docker服務啟動無響應,且輸入docker命令無響應?3. 我在centos容器里安裝docker,也就是在容器里安裝容器,報錯了?4. javascript - js閉包作用域5. 極光推送 - Android app消息推送 百度 極光 個推 信鴿哪個好一些?6. html5 - 百度echart官網下載的地圖json數據亂碼7. css3 - 學習css構建圖形時,遇到一個很有意思的現象,具體代碼如下8. html - css 使用字體的時候,格式有什么特殊要求嗎?9. 微信開放平臺 - android 微信支付后點完成按鈕,后回調打開第三方頁面,屏幕閃動,求解決方法10. javascript - echart+百度地圖
排行榜
