এর জন্য ডকুমেন্টেশন পড়ার সময় dict.copy(), এটি বলে যে এটি অভিধানের অগভীর অনুলিপি তৈরি করে। আমি অনুসরণ করছি বইটির জন্য একই (বেজলির পাইথন রেফারেন্স), যা বলে:
M.copy () পদ্ধতিটি ম্যাপিং অবজেক্টে থাকা আইটেমগুলির অগভীর অনুলিপি তৈরি করে একটি নতুন ম্যাপিং অবজেক্টে রাখে।
এই বিবেচনা:
>>> 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}
সুতরাং আমি ধরে originalনিয়েছি যে এটি অগভীর অনুলিপিটি করার পরেও (এবং 'সি': 3 যোগ করে) এর মান আপডেট করবে । আপনি যদি এটি তালিকার জন্য করেন তবে পছন্দ করুন:
>>> original = [1, 2, 3]
>>> new = original
>>> new.append(4)
>>> new, original
([1, 2, 3, 4], [1, 2, 3, 4])
এটি প্রত্যাশার মতো কাজ করে।
যেহেতু উভয়ই অগভীর অনুলিপি, কেন এটি dict.copy()আমার প্রত্যাশা মতো কাজ করে না? অথবা অগভীর বনাম গভীর অনুলিপি সম্পর্কে আমার বোঝা ত্রুটিযুক্ত?
!['A = b': 'a' এবং 'b' উভয়ের চিত্র '{1: L}', 'L' নির্দেশ করে '[1, 2, 3]'।](https://i.stack.imgur.com/4AQC6.png)
!['B = a.copy ()' এর চিত্র: 'a' '{1: L}', 'b' কে '{1: M}', 'L' এবং 'M' উভয় বিন্দুতে নির্দেশ করে [ 1, 2, 3] '।](https://i.stack.imgur.com/Vtk4m.png)
!['খ = অনুলিপি.দীপকপি (ক)' এর চিত্র: 'এ' '{1: এল}', 'এল' পয়েন্টগুলিকে '[1, 2, 3]'; 'বি' '{1: এম}', 'এম' '[1, 2, 3]' এর ভিন্ন উদাহরণকে নির্দেশ করে।](https://i.stack.imgur.com/BO4qO.png)