Identity Operators
দুইটা অবজেক্টকে compare করার জন্য Identity Operators ব্যবহার করা হয়। যদি অবজেক্ট এর মেমোরি লোকেশন আলাদা হয় তখন দুইটি অবজেক্টকে আলাদা আলাদা অবজেক্ট হিসাবে দেখে।
operator
description
is
সত্য হবে যখন দুইটা অবজেক্ট এর মেমোরি লোকেশন same হবে
Is not
সত্য হবে যখন দুইটা অবজেক্ট এর মেমোরি লোকেশন আলাদা হবে
এটা বোঝার জন্য আমাদের পাইথন অবজেক্ট কে ভালোভাবে বুঝতে হবে।
পাইথন এ অনেক ধরণের ক্লাস based অবজেক্ট আছে যেমন ইন্টিজার ,লিস্ট ,স্ট্রিং ,আমাদের নিজেদের ক্লাস এর তৈরী অবজেক্ট
কিছু কিছু ক্লাসের অবজেক্ট তৈরির পর ওই অবজেক্ট এর state পরবর্তীতে পরিবর্তন করা যায়। এই সমস্ত অবজেক্টকে mutable অবজেক্ট বলে।যেমন লিস্ট
mutable অবজেক্ট
প্রত্যেকটি mutable অবজেক্ট আলাদা আলাদা মেমোরি লোকেশন এ সেভ হয় যদিও তাদের ভ্যালু একই হয়।
Output 👍
উপরের দুইটি অবজেক্টকে আমরা যদি অবজেক্ট আইডেন্টিফায়ার অপারেটর is দ্বারা চেক করি তাহলে যেহেতু অবজেক্ট দুইটি same নয় সেজন্য False রিটার্ন করবে।
Output : False immutable অবজেক্ট : অবজেক্ট তৈরির পর ওই অবজেক্ট এর state পরবর্তীতে পরিবর্তন না করা গেলে সেটা immutable অবজেক্ট Example integer .
immutable অবজেক্ট আইডেন্টিফায়ার এর ক্ষেত্রে যদি দুইটা অবজেক্ট এর ভ্যালু আলাদা হয় তখন পাইথন দুইটি আলাদা অবজেক্ট তৈরী করে মেমোরি লোকেশন এ সেভ করে
mutable
lists, dictionaries, sets, and user-defined objects (classes)
Immutable
integers, floating-point numbers, strings, tuples, and frozen sets
is
Output
কিন্তু যদি immutable অবজেক্ট দুইটির ভ্যালু একই হয় তখন পাইথন মেমোরি অপ্টিমাইজ এর জন্য প্রথমে প্রথম অবজেক্ট তৈরী করবে এবং পরবর্তী ভ্যারিয়েবল এর জন্য নতুন কোন মেমোরি লোকেশন নেবে না প্রথম অবজেক্ট এর মেমোরি লোকেশন কে দ্বিতীয় অবজেক্ট এর মেমোরি লোকেশন হিসাবে সেট করবে।
Output : True
এটা যেভাবে কাজ করেছে :
A = 10 # একটা মেমোরি লোকেশন সেট করেছে
B = 10 # এটা যেভাবে কাজ করেছে :
একটা মেমোরি লোকেশন সেট করেছে পরবর্তীতে যখন দেখেছে b এর ভ্যালু a এর same value তখন b=a . অর্থাৎ b এর ভ্যালু a এর মেমোরি লোকেশন এ আছে। যখন অবজেক্ট এর মেমোরি লোকেশন আলাদা হয় তখন is মিথ্যা রিটার্ন করে।
is not
is এর বিপরীত হলো is not . যখন দুইটা অবজেক্ট আলাদা হবে তখনি সত্য হবে।
Output: False
Last updated