मैं बस का सामना करना पड़ा निम्नलिखित और अजगर के व्यवहार के बारे में उत्सुक हूँ:आदेश
>>> x = 1
>>> x in range(2)
True
>>> type(x in range(2))
<type 'bool'>
>>> x in range(2) == True
False
>>> x in range(2) == False
False
>>> (x in range(2)) == True
True
विशेष रूप से, क्यों (1 in range(2)) == True
मूल्यांकन करता है True
और l in range(2) == True
False
का मूल्यांकन? ऐसा लगता है कि वहाँ बाद में मूल्यांकन व्यवहार के कुछ अजीब आदेश है, सिवाय इसके कि यदि आप स्पष्ट रूप से गलत करते हैं तो आप एक TypeError
मिलती है:
>>> x in (range(2) == True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: argument of type 'bool' is not iterable
रिकॉर्ड के लिए, मैं किसी भी मामले नहीं जानता कि मैं कहाँ x in range (2)
के बजाय x in range(2) == True
का उपयोग करेगा, लेकिन यह जानना होगा कि यह क्यों हो रहा है। मैंने इसे पायथन 2.7 और पायथन 3 दोनों में भी परीक्षण किया, और व्यवहार वही है।
अच्छी अंतर्दृष्टि! किसी कारण से मैंने कभी नहीं सोचा था कि आप अन्य ऑपरेटरों के साथ 'इन' चेन कर सकते हैं। – mdml