(1 == 2 != 3)
पाइथन में False
का मूल्यांकन क्यों करता है, जबकि ((1 == 2) != 3)
और (1 == (2 != 3))
दोनों True
का मूल्यांकन करते हैं?क्यों (1 == 2! = 3) पायथन में गलत का मूल्यांकन करता है?
यहां किस ऑपरेटर की प्राथमिकता का उपयोग किया जाता है?
(1 == 2 != 3)
पाइथन में False
का मूल्यांकन क्यों करता है, जबकि ((1 == 2) != 3)
और (1 == (2 != 3))
दोनों True
का मूल्यांकन करते हैं?क्यों (1 == 2! = 3) पायथन में गलत का मूल्यांकन करता है?
यहां किस ऑपरेटर की प्राथमिकता का उपयोग किया जाता है?
यह ऑपरेटरों chaining phenomenon
के कारण है। Pydoc के रूप में यह बताते हैं:
तुलना मनमाने ढंग से श्रृंखलित जा सकता है, जैसे, एक्स < y < = z बराबर एक्स < करने के लिए y और y < = z है, सिवाय इसके कि y केवल एक बार मूल्यांकन किया जाता है (लेकिन दोनों मामलों में ज़ेड का मूल्यांकन नहीं किया जाता है जब x < y गलत पाया जाता है)।
और अगर आप ==
और !=
ऑपरेटरों की precedence को देखो, तो आप देखेंगे कि वे ही पूर्वता और इसलिए श्रृंखलन घटना के लिए लागू है।
तो मूल रूप से क्या होता है:
>>> 1==2
=> False
>>> 2!=3
=> True
>>> (1==2) and (2!=3)
# False and True
=> False
एक A op B op C
की तरह अभिव्यक्ति श्रृंखलित जहां op
तुलना ऑपरेटरों सी के विपरीत के रूप में (https://docs.python.org/2.3/ref/comparisons.html) का मूल्यांकन में हैं:
A op B and B op C
इस प्रकार, अपने उदाहरण मूल्यांकन किया जाता है
1 == 2 and 2 != 3
जिसके परिणामस्वरूप False
है।