Trong khi đọc lên tài liệu cho dict.copy()
, nó nói rằng nó làm cho một bản sao cạn của từ điển. Điều tương tự cũng xảy ra với cuốn sách tôi đang theo dõi (Tham khảo Python của Beazley), có nội dung:
Phương thức m.copy () tạo một bản sao nông của các mục có trong một đối tượng ánh xạ và đặt chúng vào một đối tượng ánh xạ mới.
Xem xét điều này:
>>> original = dict(a=1, b=2)
>>> new = original.copy()
>>> new.update({'c': 3})
>>> original
{'a': 1, 'b': 2}
>>> new
{'a': 1, 'c': 3, 'b': 2}
Vì vậy, tôi cho rằng điều này sẽ cập nhật giá trị của original
(và thêm 'c': 3) kể từ khi tôi đang thực hiện một bản sao nông. Giống như nếu bạn làm điều đó cho một danh sách:
>>> original = [1, 2, 3]
>>> new = original
>>> new.append(4)
>>> new, original
([1, 2, 3, 4], [1, 2, 3, 4])
Điều này hoạt động như mong đợi.
Vì cả hai đều là bản sao nông, tại sao dict.copy()
nó không hoạt động như tôi mong đợi? Hoặc sự hiểu biết của tôi về sao chép nông và sâu là thiếu sót?