Tôi có câu hỏi với phương pháp sao chép từ điển ví dụ cho phép nói rằng tôi cóPython từ điển bản sao phương pháp
>> d = {'pears': 200, 'apples': 400, 'oranges': 500, 'bananas': 300}
>> copy_dict = d.copy()
Bây giờ nếu tôi kiểm tra id của cả d và copy_dict, cả hai đều khác nhau
>> id(d)
o/p = 140634603873176
>> id(copy_dict)
o/p = 140634603821328
nhưng nếu tôi kiểm tra id của các đối tượng trong từ điển có cùng ý nghĩa id (d ['lê']) = id (copy_dict ['pears'])
>> id(d['pears'])
o/p = 140634603971648
>> id (copy_dict['pears'])
o/p = 140634603971648
Tất cả các đối tượng trong dict mới là tham chiếu đến cùng một đối tượng như dict gốc.
Bây giờ nếu tôi thay đổi giá trị của khóa 'lê' trong d, không có thay đổi trong cùng một khóa trong copy_dict và khi tôi kiểm tra id bây giờ, id (d ['pears'])! = Id (copy_dict [ 'lê'])
>> d['pears'] = 700
>> print copy_dict['pears']
o/p = 200
câu hỏi của tôi là nếu các đối tượng trong dict mới được tham chiếu đến các đối tượng tương tự như các dict gốc tại sao là giá trị của dict mới không thay đổi khi giá trị trong bản gốc từ điển đã thay đổi và làm thế nào Python ngay lập tức thay đổi id của ngay khi nó thấy giá trị thay đổi?
Bạn có thể vui lòng cho tôi mô tả đầy đủ về sự khác biệt giữa bản sao sâu và nông không?
Bản sao có thể có của [Hiểu dict.copy() - nông hoặc sâu?] (Http://stackoverflow.com/questions/3975376/understanding-dict-copy-shallow-or-deep) – Backtrack