Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में इन्क्रीमेंट और डिक्रीमेंट ऑपरेटर्स

पायथन में C/C++/Java की तरह ++ और -- यूनरी ऑपरेटर्स नहीं हैं।

पायथन में वृद्धि/कमी

# इन्क्रीमेंट
a += 1    # a = a + 1 के बराबर

# डिक्रीमेंट
a -= 1    # a = a - 1 के बराबर

उदाहरण

a = 0
print(f"प्रारंभिक: {a}")  # 0

# इन्क्रीमेंट
a += 1
print(f"इन्क्रीमेंट के बाद: {a}")  # 1

# डिक्रीमेंट
a -= 1
print(f"डिक्रीमेंट के बाद: {a}")  # 0

पायथन में ++ और -- का व्यवहार

a = 1
print(++a)  # 1 - यह +(+a) है, इन्क्रीमेंट नहीं!
print(--a)  # 1 - यह -(-a) है, डिक्रीमेंट नहीं!

# व्याख्या:
# ++a = +(+a) = a
# --a = -(-a) = a

पायथन का ऑब्जेक्ट मॉडल: इम्यूटेबल इंटीजर्स

पायथन में इंटीजर्स इम्यूटेबल हैं। a += 1 वास्तव में:

  1. वर्तमान ऑब्जेक्ट ढूंढता है जिसे a संदर्भित करता है
  2. उसका मान पढ़ता है
  3. नया इंटीजर ऑब्जेक्ट बनाता है (मान + 1)
  4. a को नए ऑब्जेक्ट से रीबाइंड करता है
  5. पुराना ऑब्जेक्ट गार्बेज कलेक्ट होता है (यदि कोई अन्य रेफरेंस नहीं)
a = 1
print(f"a = {a}, id = {id(a)}, hex = {hex(id(a))}")

a += 1
print(f"a = {a}, id = {id(a)}, hex = {hex(id(a))}")
# id बदल गया - नया ऑब्जेक्ट!

आउटपुट

a = 1, id = 140712345678912, hex = 0x7ff8b8c0
a = 2, id = 140712345678944, hex = 0x7ff8b8e0

मल्टीपल रेफरेंसेज पर प्रभाव

a = b = c = 1
print(f"प्रारंभिक: id(a)={id(a)}, id(b)={id(b)}, id(c)={id(c)}")
# सभी समान id

a += 1
print(f"a+=1 के बाद: id(a)={id(a)}, id(b)={id(b)}, id(c)={id(c)}")
# a का id बदल गया, b और c समान रहे

आउटपुट

प्रारंभिक: id(a)=140712345678912, id(b)=140712345678912, id(c)=140712345678912
a+=1 के बाद: id(a)=140712345678944, id(b)=140712345678912, id(c)=140712345678912

अन्य ऑगमेंटेड असाइनमेंट ऑपरेटर्स

पायथन कई ऑगमेंटेड असाइनमेंट ऑपरेटर्स सपोर्ट करता है:

ऑपरेटरसमतुल्यउदाहरण
+=a = a + ba += 5
-=a = a - ba -= 3
*=a = a * ba *= 2
/=a = a / ba /= 4
//=a = a // ba //= 2
%=a = a % ba %= 3
**=a = a ** ba **= 2
&=a = a & ba &= 0b1111
|=a = a | ba |= 0b0011
^=a = a ^ ba ^= 0b1010
>>=a = a >> ba >>= 1
<<=a = a << ba <<= 2

लूप्स में उपयोग

# फोर लूप (पायथनिक)
for i in range(10):
    print(i)

# व्हाइल लूप में मैनुअल इन्क्रीमेंट
i = 0
while i < 10:
    print(i)
    i += 1  # इन्क्रीमेंट

# रिवर्स
for i in range(10, 0, -1):
    print(i)

i = 10
while i > 0:
    print(i)
    i -= 1  # डिक्रीमेंट

सारांश

  • पायथन में ++/-- नहीं हैं
  • += 1 और -= 1 उपयोग करें
  • ये ऑपरेटर्स रीअसाइनमेंट हैं, इन्क्रीमेंट नहीं (इम्यूटेबिलिटी के कारण)
  • मल्टीपल रेफरेंसेज स्वतंत्र रूप से काम करते हैं
  • अन्य ऑगमेंटेड असाइनमेंट ऑपरेटर्स उपलब्ध हैं
  1. - Python में ++ और -- ऑपरेटर्स का व्यवहार क्या है?

    C/C++ और Java आदि में, `++` और `--` ऑपरेटर्स को इंक्रीमेंट और डिक्रीमेंट ऑपरेटर्स के रूप में परिभाषित किया गया है। Python में वे ऑपरेटर्स के रूप में परिभाषित नहीं हैं। Python में ऑब्जेक्ट्स मेमोरी में स्टोर होते हैं। वेरिएबल्स केवल लेबल हैं। न्यूमेरिक ऑब्जेक्ट्स इम्यूटेबल हैं। इसलिए उन्हें इंक्रीमे

  1. - Python में ++ और -- ऑपरेटर्स कैसे काम करते हैं?

    C, C++, Java आदि में `++` और `--` ऑपरेटर्स वेरिएबल के मान को 1 से बढ़ाते या घटाते हैं। Python में ये ऑपरेटर्स काम नहीं करते। Python में वेरिएबल्स मेमोरी में ऑब्जेक्ट्स के केवल लेबल हैं। Python में न्यूमेरिक ऑब्जेक्ट्स इम्यूटेबल हैं। इसलिए `a++` (यदि a=10) द्वारा हम 10 ऑब्जेक्ट के मान को 11 करने का

  1. - Python में स्ट्रिंग का मूल्यांकन करके ऑब्जेक्ट कैसे लौटाएं?

    बिल्ट-इन `eval()` फंक्शन को एक स्ट्रिंग तर्क की आवश्यकता होती है। हालांकि Python इंटरप्रेटर स्ट्रिंग को Python एक्सप्रेशन के रूप में मानता है और यदि यह वैध है तो इसका मूल्यांकन करता है और एक्सप्रेशन से परिणामी टाइप ऑब्जेक्ट लौटाता है। अंकगणितीय एक्सप्रेशन वाली स्ट्रिंग >>> x = eval(2+2) &g