2017-12-20 63 views
8

(1 == 2 != 3) पाइथन में False का मूल्यांकन क्यों करता है, जबकि ((1 == 2) != 3) और (1 == (2 != 3)) दोनों True का मूल्यांकन करते हैं?क्यों (1 == 2! = 3) पायथन में गलत का मूल्यांकन करता है?

यहां किस ऑपरेटर की प्राथमिकता का उपयोग किया जाता है?

उत्तर

16

यह ऑपरेटरों 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 
3

एक 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 है।

संबंधित मुद्दे