কম্পিউটার টিউটোরিয়াল

পাইথন ডিকশনারি কি সত্যিকারের মিউটেবল (Mutable)

হ্যাঁ, পাইথন ডিকশনারি মিউটেবল (Mutable)। ডিকশনারির রেফারেন্স পরিবর্তন করলে নতুন ডিকশনারি তৈরি হয় না, বরং একই অবজেক্ট ইন-প্লেস আপডেট হয়।

উদাহরণ

a = {'foo': 1, 'bar': 12}
b = a           # b এবং a একই অবজেক্ট রেফার করে

b['foo'] = 20   # b-এর মাধ্যমে মডিফাই

print(a)  # {'foo': 20, 'bar': 12}
print(b)  # {'foo': 20, 'bar': 12}

আউটপুট

{'foo': 20, 'bar': 12}
{'foo': 20, 'bar': 12}

ব্যাখ্যা

  • b = a শুধু রেফারেন্স কপি করে, নতুন ডিকশনারি বানায় না
  • b['foo'] = 20 একই অবজেক্ট মডিফাই করে
  • a এবং b উভয়েই পরিবর্তন দেখায়

নতুন ডিকশনারি বানাতে (শ্যালো কপি)

b = a.copy()        # বা dict(a)
b['foo'] = 99
print(a)  # {'foo': 20, 'bar': 12} - অপরিবর্তিত
print(b)  # {'foo': 99, 'bar': 12}

নোট: .copy() শ্যালো কপি করে। নেস্টেড ডিকশনারির জন্য copy.deepcopy() লাগবে।

  1. পাইথনে ডিকশনারি ভ্যালুকে ভেরিয়েবলে অ্যাসাইন করা

  2. গারবেজ কলেক্টর কী সকল পাইথন অবজেক্ট ট্র্যাক করতে পারে?

  3. পাইথনে টাপল ইম্মুটেবল (immutable) কেন?

  4. পাইথনে return স্টেটমেন্ট কেন ব্যবহার করা হয়?