日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

[随笔重写] Python3 的深拷贝与浅拷贝

發布時間:2024/7/5 python 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [随笔重写] Python3 的深拷贝与浅拷贝 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. Python3 關于深淺拷貝的官方文檔

  • 文檔地址:Python3.7.2
  • 源碼地址:lib/copy.py

2. 先說結論

  • 深拷貝與淺拷貝是對復合對象而言的
  • 深拷貝會構造一個新的復合對象,然后遞歸地將在原始對象中所有元素的副本對應地寫入新復合對象中
  • 淺拷貝會構造一個新的復合對象,然后(在允許的前提下)向其中寫入對原始對象的引用

3. 開始分析

  • 復合對象:包含其他對象的對象,如列表、類實例等
  • 模塊、方法、堆棧跟蹤、堆棧幀、文件、套接字、窗口、數組等不能被拷貝
  • 示例
# 例1import copy # 導入 copy 模塊list1_1 = [0, 1, 2, ['a', 'b']] list1_2 = list1_1 # 賦值 list1_3 = list1_1.copy() # 淺拷貝;同 list1_3 = list1_1[:] list1_4 = copy.copy(list1_1) # 淺拷貝 list1_5 = copy.deepcopy(list1_1) # 深拷貝# 打印出拷貝后的 list1_1 ~ list1_5 print("list1_1 =", list1_1) print("list1_2 =", list1_2) print("list1_3 =", list1_3) print("list1_4 =", list1_4) print("list1_5 =", list1_5) print('-'*40) # 分割線list1_1.append(4) # 在 list1_1 末尾添加一個元素 4 list1_1[3].append('c') # 向 list1_1 中內嵌的列表末尾添加一個元素 'c'# 打印出更改后的 list1_1 ~ list1_5 print("list1_1' =", list1_1) print("list1_2' =", list1_2) print("list1_3' =", list1_3) print("list1_4' =", list1_4) print("list1_5' =", list1_5)

>>>

list1_1 = [0, 1, 2, ['a', 'b']]
list1_2 = [0, 1, 2, ['a', 'b']]
list1_3 = [0, 1, 2, ['a', 'b']]
list1_4 = [0, 1, 2, ['a', 'b']]
list1_5 = [0, 1, 2, ['a', 'b']]
----------------------------------------
list1_1' = [0, 1, 2, ['a', 'b', 'c'], 4]
list1_2' = [0, 1, 2, ['a', 'b', 'c'], 4]
list1_3' = [0, 1, 2, ['a', 'b', 'c']]
list1_4' = [0, 1, 2, ['a', 'b', 'c']]
list1_5' = [0, 1, 2, ['a', 'b']]


  • 由例1 可看出
  • 簡單的賦值只是將引用傳給新對象,新舊對象除變量名外毫無區別
  • 原對象中非第一層的可變元素發生變化時,淺拷貝的新對象中的對應元素同步變化
  • 深拷貝的新對象是一個真正的副本,不隨原對象的改變而改變
  • 補充
  • 拷貝后的新對象占用新的空間,但其內部的元素指向原對象內部對應元素的地址
  • 原對象中非第一層的不可變元素重新生成時,淺拷貝的新對象中的對應元素保持不變

轉載于:https://www.cnblogs.com/yorkyu/p/10328162.html

總結

以上是生活随笔為你收集整理的[随笔重写] Python3 的深拷贝与浅拷贝的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。