之前一直有個觀念:對于不可變資料型別(如int,float,str,tuple)的物件都是共享的,即在同一個作用域中,相同的兩個變數會指向同一個物件,
但是今天在驗證函式引數傳遞機制時,發現相同的兩個Python元組記憶體地址有時一樣,有時不一樣,不知道是什么原因,不知道這里的大神們能否給個解釋.
第一個圖片是在互動模式,第二個圖片是撰寫文本后執行的.

[code=python][code=python]
uj5u.com熱心網友回復:
問題展現不完全!你圖1有程式有結果,沒問題。
你圖2光有結果,程式具體怎么寫的?
uj5u.com熱心網友回復:
試了確實有樓主所說的現象,個人理解是和CPython將源檔案編譯成位元組碼,然后執行位元組碼的程序中對tuple做了特殊處理,元素都是常量和不可變型別時,判定相同并使用了同一個記憶體,互動模式下沒有對tuple的記憶體儲存沒有這個處理。uj5u.com熱心網友回復:
謝謝,我也覺得和解釋器對記憶體的調配機制有關系,但是互動模式下為什么只有元組存在這個問題,而數值和字串卻沒問題,
難道就因為數值型和字串型比較簡單嗎
uj5u.com熱心網友回復:
同一地址參考,就是同一個ID轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/82736.html
上一篇:如圖
