a = [1,3,5]b = ab[0] = 9print a[0]輸出是 9理由是:python 將常見(jiàn)類(lèi)型的變量值做了引用,當(dāng)b=a 時(shí),實(shí)際上沒(méi)有復(fù)制變量。sys.getrefcount() 可以查看對(duì)某一值的引用次數(shù)比如我需要在某個(gè)list基礎(chǔ)上進(jìn)行一些修改,但是以后會(huì)同時(shí)用到修改前和修改后的list,代碼該怎么寫(xiě)呢?
2 回答

POPMUISE
TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊
這就是完全面向?qū)ο蟮脑O(shè)計(jì),我對(duì)python了解不多,不過(guò)我估計(jì)數(shù)組在python里應(yīng)該是一個(gè)對(duì)象,而對(duì)對(duì)象某個(gè)屬性的賦值,是只會(huì)改變引用的對(duì)象的。比如在php里面
$a = new stdClass();$b = $a;$b->c = 'test';print_r($a);
它會(huì)顯示
stdClass Object( [c] => ddd )

炎炎設(shè)計(jì)
TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊
深復(fù)制和淺復(fù)制的問(wèn)題啊。
python這樣設(shè)計(jì)據(jù)說(shuō)是在大部分情況下,b=a就是你想實(shí)現(xiàn)的效果,如果非要用的話(huà)可以b=a[:]。
添加回答
舉報(bào)
0/150
提交
取消