首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >浅拷贝、深拷贝和正常作业到底有什么区别?

浅拷贝、深拷贝和正常作业到底有什么区别?

提问于 2018-03-28 07:08:02
回答 2关注 0查看 197
代码语言:txt
复制
import copy

a=”deepak”
b=1,2,3,4
c=[1,2,3,4]
d={1:10,2:20,3:30}

a1=copy.copy(a)
b1=copy.copy(b)
c1=copy.copy(c)
d1=copy.copy(d)


print "immutable - id(a)==id(a1)",id(a)==id(a1)
print "immutable   - id(b)==id(b1)",id(b)==id(b1)
print "mutable - id(c)==id(c1)",id(c)==id(c1)
print "mutable   - id(d)==id(d1)",id(d)==id(d1)

我得到以下结果-

代码语言:txt
复制
immutable - id(a)==id(a1) True
immutable   - id(b)==id(b1) True
mutable - id(c)==id(c1) False
mutable   - id(d)==id(d1) False

如果我做深度复制-

代码语言:txt
复制
a1=copy.deepcopy(a)
b1=copy.deepcopy(b)
c1=copy.deepcopy(c)
d1=copy.deepcopy(d)

结果是一样的-

代码语言:txt
复制
immutable - id(a)==id(a1) True
immutable   - id(b)==id(b1) True
mutable - id(c)==id(c1) False
mutable   - id(d)==id(d1) False

如果我从事外派工作-

代码语言:txt
复制
a1=a
b1=b
c1=c
d1=d

结果是-

代码语言:txt
复制
immutable - id(a)==id(a1) True
immutable   - id(b)==id(b1) True
mutable - id(c)==id(c1) True
mutable   - id(d)==id(d1) True

有人能解释一下是什么让拷贝之间有区别吗?它是与可变的、不变的对象有关的东西吗?如果是的话,你能给我解释一下吗?

相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档