python 直接賦值&深淺拷貝 解析
阿新 • • 發佈:2020-12-14
技術標籤:python
直接賦值:引用同一個物件,賦值和被賦值的無論有什麼修改,另外一個也會改變
淺拷貝:賦值和被賦值的最內一層的無論有什麼修改,另外一個也會改變
深拷貝:完全獨立,不受影響
import copy
a = [1, 2, 3, 4, ['a', 'b']] # 原始物件
b = a # 直接賦值
c = copy.copy(a) # 淺拷貝
d = copy.deepcopy(a) # 深拷貝
a.append(5) # 修改物件a
a[4].append('c') # 修改物件a中的['a', 'b']陣列物件
print('''# 返回結果 #''' )
print('a = ', a)
print('b = ', b)
print('c = ', c)
print('d = ', d)
b.append(100)
c.append(200)
c[4].append('ccc')
d.append(300)
print('''# 返回結果 #''')
print('a = ', a)
print('b = ', b)
print('c = ', c)
print('d = ', d)
# 返回結果 #
a = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c = [1, 2, 3, 4, ['a', 'b', 'c']]
d = [1, 2, 3, 4, ['a', 'b']]
# 返回結果 #
a = [1, 2, 3, 4, ['a', 'b', 'c', 'ccc'], 5, 100]
b = [1, 2, 3, 4, ['a', 'b', 'c', 'ccc'], 5, 100]
c = [1, 2, 3, 4, ['a', 'b', 'c', 'ccc'], 200]
d = [1, 2, 3, 4, ['a', 'b'], 300]