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

পাইথনে ইনক্রিমেন্ট ও ডিক্রিমেন্ট অপারেটর (Increment and Decrement Operators in Python)

পাইথনে অনরি ইনক্রিমেন্ট/ডিক্রিমেন্ট অপারেটর (++/--) নেই। বদলে মান বেড়াতে হলে ব্যবহার করুন:

a += 1

মান কমানোর জন্য ব্যবহার করুন:

a -= 1

উদাহরণ

>>> a = 0 
>>> 
>>> # Increment 
>>> a += 1 
>>> 
>>> # Decrement 
>>> a -= 1 
>>> 
>>> # value of a 
>>> a 
0

পাইথন একই কাজ করার একাধিক পদ্ধতি দেয় না।

তবে, যদি আপনি C-এর মতো ভাষা থেকে আসেন, সতর্ক থাকুন: পাইথনে "variables" C-এর মানে নয়, বরং পাইথন নাম (names) ও অবজেক্ট (objects) ব্যবহার করে এবং পাইথনে ইন্টিজার (int's) ইমিউটেবল (immutable)।

উদাহরণ দিয়ে বুঝি:

>>> a = 1 
>>> print(id(a)) 
1919375088 
>>> print(hex(id(a))) 
0x726756f0

উপরের স্টেটমেন্টের পাইথনে অর্থ হল: মান ১ সহ একটি int টাইপের অবজেক্ট তৈরি করুন এবং সেটিকে a নাম দিন। অবজেক্টটি হল মান ১ সহ int-এর একটি ইনস্ট্যান্স এবং নাম a এটিকে রেফার করে। অ্যাসাইন করা নাম a এবং যেটিকে রেফার করে সে অবজেক্ট আলাদা।

এখন a ইনক্রিমেন্ট করি:

>>> a += 1 
>>> print(id(a)) 
1919375104 
>>> print(hex(id(a))) 
0x72675700

ইন্টিজার ইমিউটেবল হওয়ায় পাইথন উপরের স্টেটমেন্টটিকে নিচের মতো বুঝে:

  • a যেই অবজেক্টকে রেফার করে সেটি লুক আপ করুন (এটি একটি int, id 0x726756f0)
  • অবজেক্ট 0x726756f0-এর মান লুক আপ করুন (এটি ১)
  • সেটিতে ১ যোগ করুন (১+১ = ২)
  • মান ২ সহ একটি নতুন int অবজেক্ট তৈরি করুন (id 0x72675700 সহ অবজেক্ট)
  • নাম a-কে এই নতুন অবজেক্টের সাথে রি-বাইন্ড করুন (0x72675700)
  • এখন a অবজেক্ট 0x72675700 কে রেফার করে এবং পূর্বের অবজেক্ট (0x726756f0) আর নাম a দিয়ে রেফার্ড নয়। অন্য কোনো নাম যদি অরিজিনাল অবজেক্টকে রেফার না করে তবে পরে গারবেজ কलेक्ट হবে।

তাই উপরের থেকে বুঝা যাচ্ছে যখন আমরা করি: a += 1

এটি a-কে a+1-এর সাথে রি-অ্যাসাইন করে। এটি ইনক্রিমেন্ট অপারেটর নয়, কারণ এটি a-কে ইনক্রিমেন্ট করে না, বরং রি-অ্যাসাইন করে।

আরো উদাহরণ দিয়ে ইনক্রিমেন্ট/ডিক্রিমেন্ট বুঝি:

>>> a = b = c = 1 
>>> id(a) 
1919375088 
>>> id(b) 
1919375088 
>>> id(c) 
1919375088 
>>> # উপরে সবার একই আইডি 
>>> 
>>> # Now increment a 
>>> a += 1 
>>> id(a) 
1919375104 
>>> id(b) 
1919375088 
>>> id(c) 
1919375088

উপরে থেকে বুঝা যাচ্ছে একটি একক অবজেক্ট রয়েছে যাকে a, b এবং c রেফার করে (id 1919375088 সহ int)।

a-র মান ইনক্রিমেন্ট করলে, এখন a রি-অ্যাসাইন হয়েছে a+1 (id: 1919375104) এবং b ও c একই অবজেক্টকে (1919375088) রেফার করছে।

পাইথনে ++/-- অপারেটরও নেই।

>>> a = 1 
>>> ++a 
1 
>>> --a 
1
  1. পাইথনে & এবং AND অপারেটরে পার্থক্য কী?

  2. পাইথনে ++ এবং -- অপারেটরের আচরণ কী?

  3. পাইথনে ++ এবং -- অপারেটর কীভাবে কাজ করে?

  4. পাইথনে স্ট্রিং ইভ্যালুয়েট করে অবজেক্ট রিটার্ন কীভাবে করবেন?