天天看點

淺析Python 指派、淺複制(拷貝)與深度(複制)拷貝

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

1.直接指派

y = x

傳遞原始對象的引用,而不是一個副本,即y與x指向同一個對象
淺析Python 指派、淺複制(拷貝)與深度(複制)拷貝

2.淺複制(拷貝)

y = x.copy()

淺複制(拷貝)産生的對象是新的,但是它的子對象隻是對原對象的一個引用。即x 和 y 是兩個獨立的對象,但他們的子對象還是指向統一對象(是引用)
淺析Python 指派、淺複制(拷貝)與深度(複制)拷貝

3.深度複制(拷貝)

import copy
y = copy.deepcopy(x)
           
深度複制(拷貝),完全拷貝了原對象及其子對象,産生的是一個獨立的新的對象,在新的對象上進行修改不會對原對象産生影響。
淺析Python 指派、淺複制(拷貝)與深度(複制)拷貝

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 直接指派、淺拷貝和深度拷貝解析