Câu hỏi

Sự khác nhau giữa Deep copy and Shadow copy trong Python là gì?

Câu trả lời

Trong Python, việc sao chép đối tượng có thể được thực hiện theo hai cách: shallow copy (sao chép nông) và deep copy (sao chép sâu). Mỗi phương pháp có những đặc điểm và ứng dụng riêng biệt tùy thuộc vào nhu cầu sao chép đối tượng.

Shallow Copy

Shallow copy tạo ra một bản sao mới của đối tượng ban đầu, nhưng không sao chép các đối tượng con mà đối tượng ban đầu tham chiếu đến. Nói cách khác, nó chỉ sao chép cấu trúc bề ngoài của đối tượng, trong khi các đối tượng con bên trong vẫn được tham chiếu đến cùng một địa chỉ bộ nhớ như đối tượng ban đầu. Điều này có nghĩa là nếu bạn thay đổi các đối tượng con trong bản sao nông, thì những thay đổi đó cũng sẽ ảnh hưởng đến đối tượng ban đầu.

import copy

original_list = [[1, 2, 3], [4, 5, 6]]
shallow_copied_list = copy.copy(original_list)
shallow_copied_list[0][0] = 'X'

print(original_list)  # Output: [['X', 2, 3], [4, 5, 6]]

Deep Copy

Deep copy tạo ra một bản sao hoàn toàn mới của đối tượng ban đầu cùng với tất cả các đối tượng con mà nó tham chiếu. Các đối tượng con này cũng được sao chép và được lưu trữ tại các địa chỉ bộ nhớ ...

Bạn cần đăng nhập để xem