python 直接賦值和copy的區別詳解

這篇文章主要介紹了python 直接賦值和copy的區別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

直接賦值和copy的區別:

  • 直接賦值:其實就是對象的引用(別名)。
  • 淺拷貝(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']

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持神馬文庫。

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