當前位置:成語大全網 - 新華字典 - python 函數裏面 字典復制問題

python 函數裏面 字典復制問題

如果是我,我會在函數裏面聲明b是global的,而不是用似是而非的傳值傳指針,妳這樣寫是想說b_hash傳遞的是指針,可惜python裏壹旦用“=”賦值就已經相當於聲明了壹個新的變量,所以妳的這個問題兩種解決辦法:

第壹個,把妳要傳指針的東西放到列表裏:

def?test(aa,bb):

bb[0]=copy.deepcopy(aa)

a={1:1}

b=[{}]

test(a,b)

print?b[0]

這樣保證妳可以通過b這個名字找到改變後的指針。

第二個,在函數裏聲明妳要修改的是全局變量:

def?test(aa):

global?b

b=copy.deepcopy(aa)

a={1:1}

b={}

test(a)

print?b

當然,妳還可以用既不是global也不是local的局部作用域,那可以說叫閉包,但有些不好懂就不說了。。。

樓上的方法思想和第壹種壹樣,但是沒做深層拷貝,壹層for循環沒有遞歸實現了copy.copy,而不是copy.deepcopy。。。