पायथन में ऑपरेटर्स की पूर्ववर्तीता और संबद्धता

इस ट्यूटोरियल में, आप सीखेंगे कि पायथन में संचालन के क्रम पर ऑपरेटरों की पूर्वता और सहानुभूति कैसे प्रभावित करती है।

पायथन ऑपरेटर्स की प्राथमिकता

मूल्यों, चर, ऑपरेटरों और फ़ंक्शन कॉल का संयोजन एक अभिव्यक्ति के रूप में कहा जाता है। अजगर दुभाषिया एक वैध अभिव्यक्ति का मूल्यांकन कर सकता है।

उदाहरण के लिए:

 >>> 5 - 7 -2

यहाँ 5 - 7एक अभिव्यक्ति है। एक अभिव्यक्ति में एक से अधिक ऑपरेटर हो सकते हैं।

इस प्रकार के भावों का मूल्यांकन करने के लिए पाइथन में पूर्वता का नियम है। यह उस आदेश का मार्गदर्शन करता है जिसमें ये ऑपरेशन किए जाते हैं।

उदाहरण के लिए, गुणा में घटाव से अधिक पूर्वता है।

 # Multiplication has higher precedence # than subtraction >>> 10 - 4 * 2 2

लेकिन हम कोष्ठक का उपयोग करके इस आदेश को बदल सकते हैं ()क्योंकि इसमें गुणन की तुलना में अधिक पूर्वता है।

 # Parentheses () has higher precedence >>> (10 - 4) * 2 12

पायथन में ऑपरेटर पूर्वता निम्न तालिका में सूचीबद्ध है। यह अवरोही क्रम में है (ऊपरी समूह में निचले लोगों की तुलना में अधिक पूर्वता है)।

संचालक अर्थ
() कोष्ठक
** प्रतिपादक
+x, -x,~x यूनरी प्लस, यूनरी माइनस, बिटवाइज़ नॉट
*, /, //,% गुणन, विभाजन, तल विभाजन, मापांक
+, - जोड़, घटाव
<<, >> बिटवाइज़ शिफ्ट ऑपरेटर्स
& बिटवाइज़ और
^ बिटवाइज़ XOR
| बिटवार या
==, !=, >, >=, <, <=, is, is not, in,not in तुलना, पहचान, सदस्यता संचालक
not तार्किक नहीं
and तार्किक और
or तार्किक या

आइए कुछ उदाहरण देखें:

मान लीजिए हम एक ऐसे if… elseब्लॉक का निर्माण कर रहे हैं जो ifदोपहर का भोजन फल या सैंडविच के रूप में चलता है और केवल तभी जब पैसा 2 से अधिक या बराबर हो।

 # Precedence of or & and meal = "fruit" money = 0 if meal == "fruit" or meal == "sandwich" and money>= 2: print("Lunch being delivered") else: print("Can't deliver lunch")

आउटपुट

 दोपहर का भोजन दिया जा रहा है

यह प्रोग्राम ifतब भी ब्लॉक होता है, जब पैसा 0. होता है। यह हमें वांछित आउटपुट नहीं देता है, क्योंकि पूर्ववर्ती की andतुलना में अधिक है or

हम ()निम्नलिखित तरीके से कोष्ठक का उपयोग करके वांछित उत्पादन प्राप्त कर सकते हैं :

 # Precedence of or & and meal = "fruit" money = 0 if (meal == "fruit" or meal == "sandwich") and money>= 2: print("Lunch being delivered") else: print("Can't deliver lunch")

आउटपुट

 दोपहर का भोजन वितरित नहीं कर सकते

पायथन ऑपरेटर्स की सहयोगीता

हम उपरोक्त तालिका में देख सकते हैं कि एक ही समूह में एक से अधिक ऑपरेटर मौजूद हैं। इन ऑपरेटरों की एक ही मिसाल है।

जब दो ऑपरेटरों की एक ही प्राथमिकता होती है, तो संचालन के क्रम को निर्धारित करने के लिए सहकारिता मदद करती है।

संबद्धता वह क्रम है जिसमें एक अभिव्यक्ति का मूल्यांकन किया जाता है जिसमें एक ही मिसाल के कई ऑपरेटर होते हैं। लगभग सभी ऑपरेटरों में बाएं से दाएं समरूपता होती है।

उदाहरण के लिए, गुणन और फर्श विभाजन की एक ही मिसाल है। इसलिए, यदि दोनों एक अभिव्यक्ति में मौजूद हैं, तो पहले बाएं का मूल्यांकन किया जाता है।

 # Left-right associativity # Output: 3 print(5 * 2 // 3) # Shows left-right associativity # Output: 0 print(5 * (2 // 3))

आउटपुट

 ३ ०

नोट : प्रतिपादक ऑपरेटर **की पाइथन में दाएं-से-बाएं समरूपता है।

 # Shows the right-left associativity of ** # Output: 512, Since 2**(3**2) = 2**9 print(2 ** 3 ** 2) # If 2 needs to be exponated fisrt, need to use () # Output: 64 print((2 ** 3) ** 2)

हम देख सकते हैं कि 2 ** 3 ** 2इसके बराबर है 2 ** (3 ** 2)

गैर सहयोगी संचालक

कुछ ऑपरेटरों जैसे असाइनमेंट ऑपरेटरों और तुलना ऑपरेटरों की पायथन में सहानुभूति नहीं होती है। इस तरह के ऑपरेटर के अनुक्रमों के लिए अलग-अलग नियम हैं और इन्हें सहक्रियाशीलता के रूप में व्यक्त नहीं किया जा सकता है।

उदाहरण के लिए, x < y < zन तो मतलब है (x < y) < zऔर न ही x < (y < z)x < y < zके बराबर है x < y and y < zऔर बाएं से दाएं का मूल्यांकन किया जाता है।

इसके अलावा, जैसे असाइनमेंट्स की चैनिंग x = y = z = 1पूरी तरह से मान्य है, x = y = z+= 2परिणाम में त्रुटि होगी।

 # Initialize x, y, z x = y = z = 1 # Expression is invalid # (Non-associative operators) # SyntaxError: invalid syntax x = y = z+= 2

आउटपुट

 फ़ाइल "", लाइन 8 x = y = z + = 2 सिंटैक्सएयर: अमान्य सिंटैक्स

दिलचस्प लेख...