python 深淺拷貝今天用上了

2022-02-16 17:34:42 字數 947 閱讀 5527

class a(object):

def __init__(self):

self.permission_type_dict =

@property

def get_dict(self):

return dict(a=1, b=2)

def func(self):

import copy

permission_type_dict = copy.deepcopy(self.permission_type_dict)

print(permission_type_dict)

for permission in set(list_permission):

if permission in permission_type_dict.keys():

permission_type_dict.pop(permission)

return permission_type_dict

if __name__ == '__main__':

res = a().get_dict

print(res)

我遇到的問題是在網路請求時,呼叫方法func,每次呼叫都會刪除字典permission_type_dict的某些元素。

如果使用淺拷貝,變數permission_type_dict獲取的是self.permission_type_dict的位址,當對permission_type_dict操作時會直接影響self.permission_type_dict,那麼當第二次呼叫這個方法時,取到的self.permission_type_dict值就不是最初的那個值了。

故需要深拷貝,將所有的值重新賦值給乙個變數,也就是在新的位址賦值。

python 深淺拷貝案例 python 深淺拷貝

深淺拷貝 對於 數字 和 字串 而言,賦值 淺拷貝和深拷貝無意義,因為其永遠指向同乙個記憶體位址 import copy a1 22255 a2 22255 print id a1 id a2 3428240 3428240 對於字典 元祖 列表 而言,進行賦值 淺拷貝和深拷貝時,其記憶體位址的變化...

python 深淺拷貝

建立乙個寬度為3,高度為4的陣列 mylist 0 3 4 0,0,0 0,0,0 0,0,0 0,0,0 但是當操作mylist 0 1 1時,發現整個第二列都被賦值,變成 0,1,0 0,1,0 0,1,0 0,1,0 list n n shallow copies of list concat...

python深淺拷貝

python 深淺拷貝 shallow copy 和 deep copy 對於乙個列表,列表裡面可以再放入乙個列表 1 若想複製這乙個列表,使用列表的普通的copy 方法,只能拷貝出列表裡表層的元素,而列表裡的列表卻無法拷貝,只能指向前乙個列表.修改拷貝出的列表裡列表裡的元素,原來的列表會發生改變....