亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么要這么設計,這種設計在寫代碼的時候不會出現明顯的bug么?

為什么要這么設計,這種設計在寫代碼的時候不會出現明顯的bug么?

aluckdog 2023-04-04 18:14:33
a = [1,3,5]b = ab[0] = 9print a[0]輸出是 9理由是:python 將常見類型的變量值做了引用,當b=a 時,實際上沒有復制變量。sys.getrefcount() 可以查看對某一值的引用次數比如我需要在某個list基礎上進行一些修改,但是以后會同時用到修改前和修改后的list,代碼該怎么寫呢?
查看完整描述

2 回答

?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

這就是完全面向對象的設計,我對python了解不多,不過我估計數組在python里應該是一個對象,而對對象某個屬性的賦值,是只會改變引用的對象的。比如在php里面

$a = new stdClass();$b = $a;$b->c = 'test';print_r($a);

它會顯示

stdClass Object(
    [c] => ddd
)


查看完整回答
反對 回復 2023-04-07
?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

深復制和淺復制的問題啊。
python這樣設計據說是在大部分情況下,b=a就是你想實現的效果,如果非要用的話可以b=a[:]。

查看完整回答
反對 回復 2023-04-07
  • 2 回答
  • 0 關注
  • 236 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號