1. 程式人生 > 其它 >python 直接賦值&深淺拷貝 解析

python 直接賦值&深淺拷貝 解析

技術標籤: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]