Table of Contents

    Mutable এবং Immutable Objects in Python


    🧬 Mutable এবং Immutable Objects in Python

    Python প্রোগ্রামিং ভাষার একটি অত্যন্ত গুরুত্বপূর্ণ এবং পরীক্ষায় প্রায়ই জিজ্ঞাসিত বিষয় হলো Mutable এবং Immutable Objects। Python-এ প্রতিটি Variable আসলে একটি Object-এর Reference ধারণ করে। কোনো Object-এর মান পরিবর্তন করা সম্ভব কি না, তার উপর ভিত্তি করে Object-কে দুইটি প্রধান শ্রেণিতে ভাগ করা হয়:

    • Mutable Objects (পরিবর্তনযোগ্য অবজেক্ট)
    • Immutable Objects (অপরিবর্তনযোগ্য অবজেক্ট)

    একজন Python Programmer-এর জন্য এই ধারণা জানা অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি Memory Management, Performance Optimization এবং Bug-Free Program তৈরিতে গুরুত্বপূর্ণ ভূমিকা পালন করে।


    📘 Object কী?

    Python-এ সবকিছুই Object। সংখ্যা, String, List, Dictionary, Function এমনকি Class-ও Object হিসেবে বিবেচিত হয়।

    x = 10
    name = "Python"
    numbers = [1, 2, 3]

    উপরের উদাহরণে 10, "Python" এবং [1,2,3] প্রত্যেকটিই Object।

    যখন আমরা কোনো Variable তৈরি করি, তখন Variable আসলে সেই Object-এর Memory Address-এর Reference ধারণ করে।


    🔹 Immutable Object কী?

    যেসব Object তৈরি হওয়ার পর তাদের অভ্যন্তরীণ মান পরিবর্তন করা যায় না, সেগুলোকে Immutable Object বলা হয়।

    অর্থাৎ Object একবার তৈরি হলে তার Data পরিবর্তন করার চেষ্টা করলে Python পুরনো Object পরিবর্তন না করে একটি নতুন Object তৈরি করে।

    Immutable Object-এর বৈশিষ্ট্য

    • তৈরি হওয়ার পর পরিবর্তন করা যায় না।
    • Memory নিরাপদভাবে ব্যবহার করা যায়।
    • Hashable হওয়ায় Dictionary Key হিসেবে ব্যবহার করা যায়।
    • Thread Safety বেশি প্রদান করে।

    Immutable Data Types

    Data Type উদাহরণ
    int 10, 25, 100
    float 10.5, 25.75
    complex 3+4j
    bool True, False
    str "Python"
    tuple (1,2,3)
    frozenset frozenset({1,2,3})

    🔍 Immutable Object-এর উদাহরণ

    x = 10
    
    print(id(x))
    
    x = x + 5
    
    print(id(x))

    এখানে প্রথমে x Variable-এর মান ছিল 10। যখন x = x + 5 লেখা হলো, তখন Python পুরনো Object পরিবর্তন করেনি। বরং নতুন মান 15 নিয়ে একটি নতুন Object তৈরি করেছে।

    ফলে id(x) পরিবর্তিত হবে।

    Memory Representation

    x → 10
    
    x = x + 5
    
    x → 15

    এখানে 10 Object অপরিবর্তিত থাকে এবং নতুন 15 Object তৈরি হয়।


    🔹 Mutable Object কী?

    যেসব Object তৈরি হওয়ার পর তাদের অভ্যন্তরীণ Data পরিবর্তন করা যায়, সেগুলোকে Mutable Object বলা হয়।

    অর্থাৎ একই Object-এর ভিতরে নতুন Data যোগ, পরিবর্তন বা মুছে ফেলা সম্ভব।

    Mutable Object-এর বৈশিষ্ট্য

    • তৈরি হওয়ার পর পরিবর্তন করা যায়।
    • একই Memory Location ব্যবহার করে।
    • Data Update করা সহজ।
    • বড় Collection পরিচালনার জন্য উপযোগী।

    Mutable Data Types

    Data Type উদাহরণ
    list [1,2,3]
    dict {"name":"Rahim"}
    set {1,2,3}
    bytearray bytearray(b'abc')

    🔍 Mutable Object-এর উদাহরণ

    numbers = [1, 2, 3]
    
    print(id(numbers))
    
    numbers.append(4)
    
    print(id(numbers))

    এখানে List-এর মধ্যে নতুন Element যোগ করা হয়েছে। Python নতুন Object তৈরি করেনি, বরং একই Object-এর ভিতরে Data পরিবর্তন করেছে।

    ফলে List-এর Memory Address একই থাকবে।

    Output

    [1, 2, 3, 4]

    📘 String কেন Immutable?

    String Python-এর একটি Immutable Data Type।

    name = "Python"
    
    name[0] = "J"

    Output:

    TypeError

    কারণ String-এর কোনো Character সরাসরি পরিবর্তন করা যায় না।

    সঠিক উপায় হলো নতুন String তৈরি করা।

    name = "Python"
    
    name = "J" + name[1:]
    
    print(name)

    Output:

    Jython

    📘 List কেন Mutable?

    numbers = [10, 20, 30]
    
    numbers[1] = 99
    
    print(numbers)

    Output:

    [10, 99, 30]

    এখানে List-এর দ্বিতীয় Element পরিবর্তন করা হয়েছে। তাই List একটি Mutable Object।


    📊 Mutable এবং Immutable-এর মধ্যে পার্থক্য

    বিষয় Mutable Immutable
    পরিবর্তন করা যায়? হ্যাঁ না
    নতুন Object তৈরি হয়? সাধারণত না হ্যাঁ
    Memory Address একই থাকতে পারে পরিবর্তিত হতে পারে
    উদাহরণ List, Dict, Set String, Tuple, Integer
    Performance Data Update-এ ভালো Security-তে ভালো

    🎯 Mutable এবং Immutable জানার গুরুত্ব

    • Memory Management বুঝতে সাহায্য করে।
    • Function Argument Passing বুঝতে সাহায্য করে।
    • Unexpected Bug এড়ানো যায়।
    • Efficient Program Design করা যায়।
    • Data Security বৃদ্ধি পায়।
    • Interview এবং Competitive Exam-এ প্রায়ই প্রশ্ন আসে।

    📝 Summary

    Python-এ Object দুটি শ্রেণিতে বিভক্ত: Mutable এবং Immutable

    Mutable Object যেমন List, Dictionary এবং Set-এর Data পরিবর্তন করা যায়। অন্যদিকে Immutable Object যেমন Integer, Float, String এবং Tuple-এর Data সরাসরি পরিবর্তন করা যায় না। Immutable Object পরিবর্তনের চেষ্টা করলে Python নতুন Object তৈরি করে, কিন্তু Mutable Object-এর ক্ষেত্রে একই Object-এর ভিতরে পরিবর্তন সম্পন্ন হয়।

    একজন দক্ষ Python Programmer-এর জন্য Mutable এবং Immutable Object-এর ধারণা জানা অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি Memory Management, Performance Optimization এবং Secure Programming-এর ভিত্তি গঠন করে।