浅析Python 赋值、浅复制(拷贝)与深度(复制)拷贝

简介: x = {'course':['python','linux']}1.直接赋值y = x传递原始对象的引用,而不是一个副本,即y与x指向同一个对象2.浅复制(拷贝)y = x.copy()浅复制(拷贝)产生的对象是新的,但是它的子对象只是对原对象的一个引用。

x = {'course':['python','linux']}

1.直接赋值

y = x

传递原始对象的引用,而不是一个副本,即y与x指向同一个对象

img_c68efbf9d3836b2b3367e73fe4348f58.jpe

2.浅复制(拷贝)

y = x.copy()

浅复制(拷贝)产生的对象是新的,但是它的子对象只是对原对象的一个引用。即x 和 y 是两个独立的对象,但他们的子对象还是指向统一对象(是引用)

img_70efcdbe56ff962857c3a271b33c2588.jpe

3.深度复制(拷贝)

import copy
y = copy.deepcopy(x)

深度复制(拷贝),完全拷贝了原对象及其子对象,产生的是一个独立的新的对象,在新的对象上进行修改不会对原对象产生影响。

img_f9d34f743d67a2564be6f3ccf258ac8d.jpe

4.示例

import copy
x = {'course':['python','linux']}
y1 = x
y2 = x.copy()
y3 = copy.deepcopy(x)
x['course'].append('java')
print x
print y1
print y2
print y3
----------------------------------------
result:
x  =>   {'course': ['python', 'linux', 'java']}
y1 =>   {'course': ['python', 'linux', 'java']}
y2 =>   {'course': ['python', 'linux', 'java']}
y3 =>   {'course': ['python', 'linux']}

参考

Python 直接赋值、浅拷贝和深度拷贝解析

目录
相关文章
|
4天前
|
Python
python增量赋值运算的应用
Python中的增量赋值运算符用于便捷地执行算术操作,如`+=`, `-=`等,它们分别代表加法、减法、乘法、除法、取模、整除和幂运算。
10 1
|
1月前
|
存储 Python
Python系列(11)—— 赋值运算符
Python系列(11)—— 赋值运算符
C4.
|
1月前
|
Python
Python的赋值语句
Python的赋值语句
C4.
14 0
|
3月前
|
C++ Python
部分仍在编辑文章 - Python基础专题 - 深度解析python中的赋值与拷贝
部分仍在编辑文章 - Python基础专题 - 深度解析python中的赋值与拷贝
26 0
|
1月前
|
存储 关系型数据库 程序员
Python变量赋值
Python变量赋值
11 0
|
1月前
|
Python
|
3月前
|
Python Java Go
Python每日一练(20230415) 路径总和、两数相除、不同的二叉搜索树II
Python每日一练(20230415) 路径总和、两数相除、不同的二叉搜索树II
23 0
Python每日一练(20230415) 路径总和、两数相除、不同的二叉搜索树II
|
3月前
|
存储 Java Python
Python 变量?对象?引用?赋值?一个例子解释清楚
Python 变量?对象?引用?赋值?一个例子解释清楚
|
4月前
|
人工智能 测试技术 Python
软件测试/人工智能|Python赋值运算符如何灵活使用
软件测试/人工智能|Python赋值运算符如何灵活使用
110 0
|
4月前
|
PHP Python
关于python变量的再次折腾,没有PHP的引用赋值
今天,重看php文档的时候,发现了这样的讲法
15 0