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

पायथन में इनप्लेस vs स्टैंडर्ड ऑपरेटर्स

इनप्लेस ऑपरेटर्स ऑब्जेक्ट को सीधे मॉडिफाई करते हैं बिना नई कॉपी बनाए। स्टैंडर्ड ऑपरेटर्स नया ऑब्जेक्ट बनाते हैं।

इनप्लेस ऑपरेटर्स

सामान्य इनप्लेस ऑपरेटर्स: +=, -=, *=, /=, %=, //=, **=।

a = 9
a += 2
print(a)  # 11 (a मॉडिफाई हुआ)

language = "Python"
language += "3"
print(language)  # Python3 (स्ट्रिंग्स इम्यूटेबल हैं, लेकिन += नया ऑब्जेक्ट बनाकर रीबाइंड करता है)

operator मॉड्यूल: फ़ंक्शनल फॉर्म

प्रत्येक इनप्लेस ऑपरेटर का operator मॉड्यूल में फ़ंक्शन समकक्ष होता है:

ऑपरेटरoperator फ़ंक्शनविवरण
+=iadd(x, y)इनप्लेस एडिशन
-=isub(x, y)इनप्लेस सब्ट्रैक्शन
*=imul(x, y)इनप्लेस मल्टीप्लिकेशन
/=itruediv(x, y)इनप्लेस ट्रू डिवीजन
//=ifloordiv(x, y)इनप्लेस फ्लोर डिवीजन
%=imod(x, y)इनप्लेस मॉड्यूलो
**=ipow(x, y)इनप्लेस पावर
+= (सीक्वेंस)iconcat(x, y)इनप्लेस कॉनकैटनेशन

उदाहरण

import operator

print(operator.iadd(9, 18))      # 27
print(operator.isub(9, 18))      # -9
print(operator.imul(9, 18))      # 162
print(operator.itruediv(9, 18))  # 0.5
print(operator.imod(9, 18))      # 9
print(operator.iconcat("Tutorials", "Point"))  # TutorialsPoint
print(operator.ipow(2, 6))       # 64

स्टैंडर्ड ऑपरेटर्स और फ़ंक्शन मैपिंग

operator मॉड्यूल सभी स्टैंडर्ड ऑपरेटर्स के लिए फ़ंक्शन प्रदान करता है:

ऑपरेशनसिंटैक्सoperator फ़ंक्शन
एडिशनx + yadd(x, y)
सब्ट्रैक्शनx - ysub(x, y)
मल्टीप्लिकेशनx * ymul(x, y)
डिवीजनx / ytruediv(x, y)
फ्लोर डिवीजनx // yfloordiv(x, y)
मॉड्यूलोx % ymod(x, y)
पावरx ** ypow(x, y)
कॉनकैटनेशनseq1 + seq2concat(seq1, seq2)
कंटेनमेंट टेस्टobj in seqcontains(seq, obj)
इंडेक्सिंगobj[k]getitem(obj, k)
स्लाइसिंगseq[i:j]getitem(seq, slice(i, j))
एट्रिब्यूट एक्सेसobj.attrgetattr(obj, 'attr')
नेगेशन-xneg(x)
लॉजिकल NOTnot xnot_(x)
बिटवाइज़ ANDx & yand_(x, y)
बिटवाइज़ ORx | yor_(x, y)
बिटवाइज़ XORx ^ yxor(x, y)
लेफ्ट शिफ्टx << ylshift(x, y)
राइट शिफ्टx >> yrshift(x, y)

महत्वपूर्ण अंतर

  • म्यूटेबल ऑब्जेक्ट्स (लिस्ट, डिक्ट, सेट): इनप्लेस ऑपरेटर्स वास्तव में ऑब्जेक्ट मॉडिफाई करते हैं।
  • इम्यूटेबल ऑब्जेक्ट्स (इंट, स्ट्रिंग, टपल): += नया ऑब्जेक्ट बनाता है और वेरिएबल को रीबाइंड करता है (दिखने में इनप्लेस लगता है, लेकिन वास्तव में नहीं)।
  • operator.iadd आदि म्यूटेबल ऑब्जेक्ट्स पर इनप्लेस मॉडिफिकेशन करते हैं, इम्यूटेबल पर नया ऑब्जेक्ट लौटाते हैं।

उदाहरण: लिस्ट पर इनप्लेस vs स्टैंडर्ड

lst1 = [1, 2, 3]
lst2 = lst1
lst1 += [4, 5]      # इनप्लेस: lst1 और lst2 दोनों प्रभावित
print(lst1, lst2)   # [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]

lst1 = [1, 2, 3]
lst2 = lst1
lst1 = lst1 + [4, 5]  # स्टैंडर्ड: नई लिस्ट बनती है
print(lst1, lst2)     # [1, 2, 3, 4, 5] [1, 2, 3]
  1. - पायथन में डिवीजन ऑपरेटर्स

    पायथन में डिवीजन का व्यवहार संस्करणों के बीच बदल गया है, जो एक सामान्य भ्रम का स्रोत है। पायथन 2.x में व्यवहार पायथन 2 में / ऑपरेटर आर्गुमेंट्स पर निर्भर करता था: दोनों इंटीजर हों तो फ्लोर डिवीजन (पूर्णांक परिणाम)। कोई एक फ्लोट हो तो ट्रू डिवीजन (फ्लोट परिणाम)। >>> # Python 2.7 >>

  1. - पायथन स्टैंडर्ड ऑपरेटर्स को फ़ंक्शन्स के रूप में (operator मॉड्यूल)

    प्रोग्रामिंग में, ऑपरेटर आमतौर पर एक सिंबल (की) होता है जो किसी विशेष ऑपरेशन जैसे जोड़, घटाव, तुलना आदि को करने के लिए पूर्वनिर्धारित होता है। पायथन में बिल्ट-इन ऑपरेशन्स का एक बड़ा सेट होता है जो विभिन्न श्रेणियों जैसे अंकगणितीय, तुलना, बिट-वाइज़, सदस्यता आदि में विभाजित होते हैं। पायथन लाइब्रेरी

  1. - Python में तुलना ऑपरेटर्स की चेनिंग

    कभी-कभी हमें एक ही स्टेटमेंट में एक से अधिक कंडीशन चेकिंग का उपयोग करने की आवश्यकता होती है। इसके लिए कुछ बेसिक सिंटैक्स हैं जैसे x < y < z, या if x < y and x < z आदि। अन्य भाषाओं की तरह, Python में कुछ बेसिक तुलना ऑपरेटर्स हैं। ये तुलना ऑपरेटर्स हैं , <=, , =, ==, !=, is, is not, in, not in। इन ऑपर