Hướng dẫn python create copy of instance - python tạo bản sao của phiên bản
Bạn có nghĩa là một đối tượng có thể thay đổi sau đó. Trong Python 3, danh sách nhận được phương thức 6 (trong 2, bạn sẽ sử dụng một lát để tạo một bản sao):
Bản sao nôngBản sao nông chỉ là bản sao của container ngoài cùng. 7 là một bản sao nông:
Bạn không nhận được một bản sao của các đối tượng nội thất. Chúng là cùng một đối tượng - vì vậy khi chúng bị đột biến, sự thay đổi hiển thị trong cả hai container. Bản sao sâuBản sao sâu là bản sao đệ quy của mỗi đối tượng nội thất.
Thay đổi không được phản ánh trong bản gốc, chỉ trong bản sao. Đối tượng bất biếnCác đối tượng bất biến thường không cần phải sao chép. Trên thực tế, nếu bạn cố gắng, Python sẽ chỉ cung cấp cho bạn đối tượng ban đầu:
Tuples thậm chí không có một phương thức sao chép, vì vậy hãy thử nó bằng một lát:
Nhưng chúng ta thấy đó là cùng một đối tượng:
Tương tự cho chuỗi:
và đối với Frozensets, mặc dù chúng có phương pháp 6:
Khi nào nên sao chép các đối tượng bất biếnCác đối tượng bất biến nên được sao chép nếu bạn cần một đối tượng nội thất có thể thay đổi được sao chép.
Như chúng ta có thể thấy, khi đối tượng bên trong của bản sao bị đột biến, bản gốc không thay đổi. Đối tượng tùy chỉnhCác đối tượng tùy chỉnh thường lưu trữ dữ liệu trong thuộc tính 9 hoặc trong 0 (cấu trúc bộ nhớ giống như tuple.)Để tạo một đối tượng có thể sao chép, hãy xác định 1 (cho các bản sao nông) và/hoặc 2 (cho các bản sao sâu).
Lưu ý rằng 3 giữ một từ điển ghi nhớ của 4 (hoặc số nhận dạng) cho các bản sao. Để tận hưởng hành vi tốt với các cấu trúc dữ liệu đệ quy, hãy chắc chắn rằng bạn đã không tạo một bản sao và nếu bạn có, hãy trả lại điều đó.Vì vậy, hãy tạo một đối tượng: 0Và 6 tạo ra một bản sao nông: 1Và 3 bây giờ tạo ra một bản sao sâu: 2 Một bản sao nông xây dựng một đối tượng hợp chất mới và sau đó (trong phạm vi có thể) chèn các tham chiếu vào nó vào các đối tượng được tìm thấy trong bản gốc. Một bản sao sâu xây dựng một đối tượng hợp chất mới và sau đó, đệ quy, chèn các bản sao vào nó của các đối tượng được tìm thấy trong bản gốc.Làm thế nào để bạn tạo một bản sao sâu của một đối tượng trong Python? Để tạo một bản sao sâu, hãy sử dụng hàm DeepCopy () của mô -đun sao chép. Trong một bản sao sâu, các bản sao được chèn thay vì các tham chiếu đến các đối tượng, do đó, việc thay đổi cái này không thay đổi cái kia. Sao chép một đối tượng trong PythonTrong Python, chúng tôi sử dụng toán tử 7 để tạo một bản sao của một đối tượng. Bạn có thể nghĩ rằng điều này tạo ra một đối tượng mới; nó không. Nó chỉ tạo ra một biến mới chia sẻ tham chiếu của đối tượng gốc.Hãy lấy một ví dụ trong đó chúng tôi tạo một danh sách có tên Old_list và chuyển một tham chiếu đối tượng đến new_list bằng toán tử 7. 4Ví dụ 1: Sao chép bằng cách sử dụng = toán tử 3Khi chúng tôi chạy trên chương trình, đầu ra sẽ là:
Vì vậy, nếu bạn muốn sửa đổi bất kỳ giá trị nào trong new_list hoặc old_list, thay đổi có thể nhìn thấy trong cả hai. Về cơ bản, đôi khi bạn có thể muốn có các giá trị ban đầu không thay đổi và chỉ sửa đổi các giá trị mới hoặc ngược lại. Trong Python, có hai cách để tạo bản sao:Bản sao nông 5Để làm cho các bản sao này hoạt động, chúng tôi sử dụng mô -đun 6.Như bạn có thể thấy từ đầu ra, cả hai biến Old_List và New_list chia sẻ cùng một ID i.e >>> a_tuple = tuple('abc')
>>> tuple_copy_attempt = a_tuple.copy()
Traceback (most recent call last):
File " |