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