• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MC_Hotdog
Yeah, you're right I'm still riding that crappy bike
博客园    首页    新随笔    联系   管理    订阅  订阅

Python之深浅拷贝

数字和字符串

对于数字 字符串而言,赋值、浅拷贝、深拷贝无意义,因为永远指向同一内存地址

 1 import copy
 2 #定义变量   数字、字符串
 3 n1 = 123
 4 #n1 = 'nick'
 5 print(id(n1))
 6  
 7 #赋值
 8 n2 = n1
 9 print(id(n2))
10  
11 #浅拷贝
12 n3 = copy.copy(n1)
13 print(id(n3))
14  
15 #深拷贝
16 n4 = copy.deepcopy(n1)
17 print(id(n4))

 字典、元组。列表

对于字典、元祖、列表 而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的。

1、赋值

创建一个变量该变量指向原来内存地址

1 n1 = {"k1": "nick", "k2": 123, "k3": ["jenny", 666]}
2 n2 = n1

2、浅拷贝

在内存中只额外创建第一层数据

1 import copy
2    
3 n1 = {"k1": "nick", "k2": 123, "k3": ["jenny", 666]}
4 n2 = copy.copy(n1)

3、深拷贝

在内存中将所有的数据重新创建一份(排除最后一层,即:python内部对字符串和数字的优化)

1 import copy
2    
3 n1 = {"k1": "nick", "k2": 123, "k3": ["jenny", 666]}
4 n2 = copy.deepcopy(n1)

 

posted @ 2019-07-14 19:18  MC_Hotdog  阅读(366)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3