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

पायथन में शॉर्ट सर्किटिंग तकनीक?

प्रोग्रामिंग के लिए नए लोगों के लिए एक आम गलती बूलियन ऑपरेटरों के काम करने के तरीके की गलतफहमी है, जो कि पाइथन दुभाषिया इन अभिव्यक्तियों को पढ़ने के तरीके से उत्पन्न होता है। उदाहरण के लिए, शुरू में "और" और "या" कथनों के बारे में जानने के बाद, कोई यह मान सकता है कि व्यंजक X =('x' या 'y') यह देखने के लिए जाँच करेगा कि क्या चर X किसी एक स्ट्रिंग 'a' के बराबर है। ' या 'बी'। ऐसा नहीं है। यह समझने के लिए कि मैं क्या कहना चाह रहा हूँ, दुभाषिया के साथ एक इंटरैक्टिव सत्र शुरू करें और निम्नलिखित भाव दर्ज करें:

>>> 'x' == ('x' or 'y')
True
>>> 'y' == ('x' or 'y')
False
>>> 'x' == ('x' and 'y')
False
>>> 'y' == ('x' and 'y')
True

इस बिंदु पर, और और या ऑपरेटर टूटा हुआ प्रतीत होता है। इसका कोई मतलब नहीं है कि, पहले दो व्यंजकों के लिए, 'x', 'x' के बराबर है या 'y' नहीं है। इसके अलावा, इसका कोई मतलब नहीं है कि 'y' 'x' और 'y' के बराबर है। यह जांचने के बाद कि दुभाषिया बूलियन ऑपरेटरों के साथ क्या करता है, ये परिणाम वास्तव में वही करते हैं जो आप उनसे पूछ रहे हैं, यह वैसा नहीं है जैसा आप सोचते हैं कि आप पूछ रहे हैं।

एक या अभिव्यक्ति के मामले में, पायथन दुभाषिया पहले पहला बयान लेता है और यह देखने के लिए जांच करता है कि क्या सच है। जब पहला कथन सत्य होता है, तो अजगर दूसरे तर्क को देखे बिना उस वस्तु का मान लौटा देता है। ऐसा इसलिए है क्योंकि किसी या व्यंजक के लिए, यदि कोई एक मान सत्य है, तो पूरी बात सत्य है; और कार्यक्रम दूसरे कथन को नहीं देखता है। हालाँकि, यदि पहला ऑब्जेक्ट मान असत्य का मूल्यांकन करता है, तो अजगर दूसरे कथन की जाँच करता है और वह मान लौटाता है। दूसरी छमाही अभिव्यक्ति के सत्य मूल्य को निर्धारित करती है क्योंकि पहली छमाही झूठी थी। दुभाषिया की ओर से इस "आलस्य" को "शॉर्ट-सर्किटिंग" कहा जाता है और यह कई प्रोग्रामिंग भाषाओं में बूलियन अभिव्यक्ति का मूल्यांकन करने का एक सामान्य तरीका है।

इसी तरह, एक और अभिव्यक्ति के लिए, अजगर सत्य मूल्य मूल्यांकन को गति देने के लिए शॉर्ट सर्किट तकनीक का उपयोग करता है। यदि पहला कथन गलत है तो पूरी बात झूठी होनी चाहिए और यह उस वस्तु का मान (गलत) लौटाती है, यदि पहला मान सत्य है तो यह दूसरे की जाँच करता है और उस मान को लौटाता है। आइए एक नज़र डालते हैं कि कोड के माध्यम से दुभाषिया "देखता" क्या है

पहला मामला

'x' == ('x' or 'y') # Look at parentheses first, so evaluates "('x' or 'y")"
# 'x' is a nonempty string, so the first value is True
>>> 'x' == 'x' # the string 'x' is equivalent to the string 'x' , so our expression is True
True

दूसरा मामला

'y' == ('x' or 'y')# Look at parentheses first, so evaluates expression "('x' or 'y')"
# 'x' is a nonempty string, so the first value is True
#Return that first value : 'x'
'y' == 'x'# the string 'y' is not equivalent to the string 'x', so the expression is False

तीसरा मामला

>>> 'x' == ('x' and 'y')# Look at parentheses first, so evaluate expression "('x' and 'y')"
#'x' is a nonempty string, so the first value is True, examine second value
# 'y' is a nonempty string, so second value is True
#Return that second value as result of whole expression: 'y'
>>> 'x' == 'y'# the string 'x' is not equivalent to the string 'y', so expression is False
False

चौथा मामला

>>> 'y' == ('x' and 'y')# Look at parenthese first, so evaluates expression "('x' and 'y')"
True
# 'x' is a nonempty string, so the first value is True, examine second value
# 'y' is a nonempty string, so second value is True
# Return that second value as result of whole expression: 'y'
>>> 'y' == 'y'# the string 'y' is equivalent to the string 'y', so expression is True
True

शॉर्ट-सर्किट मूल्यांकन का अर्थ है कि AND और OR जैसे बूलियन एक्सप्रेशन का मूल्यांकन करते समय, जैसे ही आपको पहली शर्त मिलती है, जो एक्सप्रेशन को संतुष्ट या अस्वीकार करती है, आप रुक सकते हैं।

आधिकारिक दस्तावेज़ीकरण द्वारा समझाया गया शॉर्ट सर्किट:

<थेड>
ऑपरेशन
<वें शैली ="पाठ-संरेखण:केंद्र;">परिणाम
<वें शैली ="पाठ-संरेखण:केंद्र;">विवरण
x या y
यदि x गलत है, तो y और x
केवल दूसरे तर्क (y) का मूल्यांकन करता है यदि प्राथमिकी गलत है
x और y
यदि x गलत है, तो x अन्य y
केवल दूसरे तर्क (y) का मूल्यांकन करता है यदि पहला तर्क (x) सत्य है
नहीं x
यदि x असत्य है, तो सत्य है, अन्यथा असत्य है
गैर-बूलियन ऑपरेटरों की तुलना में कम प्राथमिकता नहीं है


  1. issuperset () पायथन में

    इस लेख में, हम पायथन में issuperset() और विभिन्न क्षेत्रों में इसके कार्यान्वयन के बारे में जानेंगे। यह विधि बूलियन ट्रू लौटाती है यदि एक सेट बी के सभी तत्वों में सभी तत्व सेट ए होते हैं जो एक तर्क के रूप में पारित होते हैं और यदि ए के सभी तत्व बी में मौजूद नहीं होते हैं तो झूठा रिटर्न देता है। इस

  1. पायथन में अंडरस्कोर (_)

    पायथन में कुछ मामलों में हम सिंगल अंडरस्कोर (_) का उपयोग करते हैं और कुछ मामलों में हम डबल अंडरस्कोर (__) का उपयोग करते हैं। पायथन में निम्नलिखित मामले हैं, जहां हम अंडरस्कोर का उपयोग करते हैं। अगर हम दुभाषिए में लास्ट एक्सप्रेशन की वैल्यू स्टोर करना चाहते हैं। यदि हम कुछ मूल्यों को अनदेखा करना चा

  1. पायथन में क्विन

    क्विन एक प्रोग्राम है, जो कोई इनपुट नहीं लेता है, लेकिन यह आउटपुट का उत्पादन करता है। यह इसका अपना सोर्स कोड दिखाएगा। इसके अतिरिक्त, क्विन की कुछ शर्तें हैं। हम प्रोग्राम के अंदर सोर्स कोड फ़ाइल नहीं खोल सकते। उदाहरण कोड a=a=%r;print (a%%a);print (a%a) आउटपुट a=a=%r;print (a%%a);print (a%a) य