Hãy nói rằng tôi có mã này:dict.get() phương thức trả về một con trỏ
my_dict = {}
default_value = {'surname': '', 'age': 0}
# get info about john, or a default dict
item = my_dict.get('john', default_value)
# edit the data
item[surname] = 'smith'
item[age] = 68
my_dict['john'] = item
Vấn đề trở nên rõ ràng, nếu bây giờ chúng tôi kiểm tra giá trị của DEFAULT_VALUE:
>>> default_value
{'age': 68, 'surname': 'smith'}
Rõ ràng , rằng my_dict.get()
không trả về giá trị của default_value, nhưng con trỏ (?) cho nó.
Vấn đề có thể được giải quyết bằng cách thay đổi mã để:
item = my_dict.get('john', {'surname': '', 'age': 0})
nhưng điều đó dường như không phải là một cách tốt đẹp để làm điều đó. Bất kỳ ý kiến, ý kiến?
Đây là một nguyên lý rất quan trọng của python - * tất cả các giá trị được truyền * bằng cách tham chiếu. Tính đột biến của các tham chiếu đó là một vấn đề hoàn toàn khác (mặc dù nó thường đi theo con người theo cách này). –
Tôi chắc chắn rằng tôi đã đọc về nó trước đây, nhưng bạn có xu hướng quên đi những điều khi không sử dụng một ngôn ngữ trong một thời gian dài. Cảm ơn bạn đã làm rõ điều đó. – Armandas
Tại sao câu trả lời của bạn khác với câu trả lời được cung cấp trong câu hỏi. Câu hỏi có vẻ là nhiều hơn về việc tìm kiếm một cách thanh lịch để trả lại một trường hợp mới của dict, nhưng chỉ tạo ra nó khi cần thiết. – Dunes