python 直接賦值和copy的區(qū)別詳解
更新時間:2019年08月07日 16:50:35 作者:caizhanjin
這篇文章主要介紹了python 直接賦值和copy的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
直接賦值和copy的區(qū)別:
- 直接賦值:其實就是對象的引用(別名)。
- 淺拷貝(copy):拷貝父對象,不會拷貝對象的內部的子對象。
- 深拷貝(deepcopy): copy 模塊的 deepcopy 方法,完全拷貝了父對象及其子對象。
例子:
dict1 = {'user':'runoob','num':[1,2,3]}
dict2 = dict1 # 淺拷貝: 引用對象
dict3 = dict1.copy() # 深拷貝:深拷貝父對象(一級目錄),子對象(二級目錄)不拷貝,還是引用
# 修改 data 數據
dict1['user']='root'
dict1['num'].remove(1)
# 輸出結果
print(dict1)
print(dict2)
print(dict3)
實例中 dict2 其實是 dict1 的引用(別名),所以輸出結果都是一致的,dict3 父對象進行了深拷貝,不會隨dict1 修改而修改,子對象是淺拷貝所以隨 dict1 的修改而修改。
{'user': 'root', 'num': [2, 3]}
{'user': 'root', 'num': [2, 3]}
{'user': 'runoob', 'num': [2, 3]}
例子:求打印的結果
def extend_list(val, list=[]):
list.append(val)
return list
list1 = extend_list(10)
list2 = extend_list(123, [])
list3 = extend_list('a')
print("list1 = %s" % list1)
print("list2 = %s" % list2)
print("list3 = %s" % list3)
輸出結果:
list1 = [10, 'a'] list2 = [123] list3 = [10, 'a']
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
python 使用事件對象asyncio.Event來同步協程的操作
這篇文章主要介紹了python 使用事件對象asyncio.Event來同步協程的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
Python基于matplotlib實現繪制三維圖形功能示例
這篇文章主要介紹了Python基于matplotlib實現繪制三維圖形功能,涉及Python使用matplotlib模塊進行三維圖形繪制相關操作技巧,需要的朋友可以參考下2018-01-01

