如果是我,我會在函數裏面聲明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。。。