我要学python之深浅拷贝原理
admin
2023-07-19 21:02:10
0

前言

在c++中参数传递有两种形式:值传递和引用传递。这两种方式的区别我不在此说,自行补上,如果你不知道的话。我先上python代码,看完我们总结一下,代码如下:

# copy module import
import copy

# number and string
a = 12
a1 = a
a2 = copy.copy(a)
a3 = copy.deepcopy(a)
# look addr
print("==========number=======")
print(id(a))
print(id(a1))
print(id(a2))
print(id(a3))

s = '12345'
s1 = s
s2 = copy.copy(s)
s3 = copy.deepcopy(s)
# look addr
print("==========String=======")
print(id(s))
print(id(s1))
print(id(s2))
print(id(s3))

# others
target = {
    'name': 'ckmike',
    'age': 25,
    'boxes':[
        'LV',
        'Prada',
        'KUQI'
    ]
}
target1 = target
target2 = copy.copy(target)
target3 = copy.deepcopy(target)
print("==========dict-1=======")
print(id(target))
print(id(target1))
print(id(target2))
print(id(target3))
print("==========dict-2=======")
print(id(target['boxes']))
print(id(target1['boxes']))
print(id(target2['boxes']))
print(id(target3['boxes']))

输出结果:
==========number=======
10943360
10943360
10943360
10943360
==========String=======
140567123944648
140567123944648
140567123944648
140567123944648
==========dict-1=======
140567124625088
140567124625088
140567124625160
140567123938760
==========dict-2=======
140567099339272
140567099339272
140567099339272
140567099339464

总结:
对于数值、字符串而言,不管是赋值符号还是浅拷贝、深拷贝,都是引用的内存中的同一份值,变量指向同一地址。
对于非数值非字符串而言,浅拷贝只会拷贝对象的第一层,深拷贝则会把所有层都进行拷贝。

具体深浅拷贝,可以查看模块copy中的copy和deepcopy源码

相关内容

热门资讯

G7称降低对中国关键矿产的依赖... 澎湃新闻记者 聂舒翼 谢瑞强6月18日,外交部发言人林剑主持例行记者会。路透社记者提问,G7峰会发表...
一边援乌一边买俄能源,“全场买... 【观察者网专栏作者 沈逸】大家好,欢迎来到本期的《逸语道破》,我们今天来聊一下俄乌局势。截至2026...
涉伊朗女子小学遇袭事件,美防长... △美防长赫格塞思(资料图)美国国会参议院草拟的“2027财政年度国防授权法案”规定,如国防部长赫格塞...
香港机场突发劫案:总重6公斤、... 今天(6月18日),香港国际机场3号停车场发生恶性持刀抢劫案,一名刚从印尼巴厘岛返港的36岁男子被多...
山西运城少年报警遭假警察诱殴,... 据媒体报道,山西运城17岁高中生小雷与高三学生王某相识多年。5月7日晚,王某因女友琐事与小雷起争执,...
湖南一射击俱乐部发生枪支走火,... 2023年7月22日13时许,湖南省岳阳市一射击俱乐部工作人员杜某在指导顾客刘某时,因枪支意外走火,...
科技牛市看芯片底座,如何借道E... 抓科技主线,先看芯片产业。 作者 | 破浪 编辑 | 小白 科技牛市看什么?风云君认为,不能只看短...
华为申请天线系统专利,可便捷灵... 国家知识产权局信息显示,华为技术有限公司申请一项名为“天线系统、通信设备和通信系统”的专利,公开号C...
梁建章官宣:携程男性员工将享2... 快科技6月18日消息,今日上午,携程联合创始人兼执行董事局主席梁建章发布文章《谈谈男性的育儿责任》。...
彰化县长选举泛绿内战,邱建富喊... 海峡导报综合报道 彰化市前市长邱建富退出民进党投入彰化县长选战,近日宣称自己可取得蓝绿各25%以上的...