關於python copy的deepcoy的理解

>>> dict = {'1':{'2':{'3':'4'}}}
>>> import copy
>>> equal_dict = dict
>>> copy_dict = copy.copy(dict)
>>> deepycopy_dict = copy.deepcopy(dict)
>>> dict == equal_dict
True
>>> dict == copy_dict
True
>>> dict == deepycopy_dict
True
>>> dict is equal_dict
True
>>> dict is copy_dict
False
>>> dict is deepycopy_dict
False
>>> dict['1']['2']['3']
'4'
>>> dict['1']['2']['3'] = 'change'
>>> equal_dict['1']['2']['3']
'change'
>>> copy_dict['1']['2']['3']
'change'
>>> deepycopy_dict['1']['2']['3']
'4'
>>>

觀察上面的執行可以得出幾個結論:

1.  =  賦值操作 對於引用對象只是添加一個引用,源數據的改變會波及賦值的數據

2.  copy函數對於引用對象,已經不是同一個對象,但是源數據的改變仍然會影響到賦值的數據,說明什麼?說明外層的引用已經不是同一個對象,但是內層的引用仍然指向源數據。所以什麼,所以copy只能解決單層引用對象的賦值波及,對於多層嵌套無能爲力,這就是爲什麼deepcopy叫:深 拷 貝。

3. deepcoy函數對於引用對象,已經不是同一個對象,且對於源數據的改變已經不會影響到賦值的數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章