python - क्यों(1[1,0]== सच में) गलत का मूल्यांकन करता है?



syntax operator-precedence (1)

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

(1 in [1, 0]) and ([1, 0] == True)

जो स्पष्ट रूप से False

यह अभिव्यक्तियों के लिए भी होता है

a < b < c

जो अनुवाद करते हैं

(a < b) and (b < c)

( b दो बार मूल्यांकन किए बिना)।

अधिक जानकारी के लिए पाइथन भाषा प्रलेखन देखें।

इस प्रश्न का उत्तर यहां दिया गया है:

जब मैं इस सवाल के जवाब देख रहा था, मैंने पाया कि मुझे अपना जवाब नहीं समझा।

मैं वास्तव में समझ में नहीं आता कि यह कैसे पार्स किया जा रहा है। दूसरा उदाहरण झूठा क्यों लौटाता है?

>>> 1 in [1,0]             # This is expected
True
>>> 1 in [1,0] == True     # This is strange
False
>>> (1 in [1,0]) == True   # This is what I wanted it to be
True
>>> 1 in ([1,0] == True)   # But it's not just a precedence issue!
                           # It did not raise an exception on the second example.

Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    1 in ([1,0] == True)
TypeError: argument of type 'bool' is not iterable

किसी भी मदद के लिए धन्यवाद। मुझे लगता है कि मुझे वास्तव में कुछ याद आना चाहिए।

मुझे लगता है कि यह लिंक किए गए डुप्लिकेट से काफी अलग है:

अभिव्यक्ति 0 <0 == 0 पाइथन में झूठी वापसी क्यों करती है?

अभिव्यक्ति की मानव समझ के साथ दोनों प्रश्न हैं। अभिव्यक्ति का मूल्यांकन करने के दो तरीके (मेरे दिमाग में) लगते थे। बेशक न तो सही थे, लेकिन मेरे उदाहरण में, अंतिम व्याख्या असंभव है।

0 < 0 == 0 देखकर आप कल्पना कर सकते हैं कि प्रत्येक आधे का मूल्यांकन किया जा रहा है और अभिव्यक्ति के रूप में समझ में आ रहा है:

>>> (0 < 0) == 0
True
>>> 0 < (0 == 0)
True

तो लिंक जवाब देता है कि यह False क्यों मूल्यांकन करता है:

>>> 0 < 0 == 0
False

लेकिन मेरे उदाहरण 1 in ([1,0] == True) अभिव्यक्ति के रूप में समझ में नहीं आता है, इसलिए वहां दो (स्वीकार्य रूप से गलत) संभावित व्याख्याओं के बजाय, केवल एक ही संभव लगता है:

>>> (1 in [1,0]) == True




operator-precedence