2016-07-10 7 views
6

मैं हाल ही में पता चला कि निम्नलिखित रिटर्न True:जहां पाइथन डॉक्स में यह 'इन' ऑपरेटर को जंजीर करने की अनुमति देता है?

'a' in 'ab' in 'abc' 

मैं a < b < c के रूप में इस तरह के चेनिंग अजगर तुलना के बारे में पता है, लेकिन मैं इस कानूनी होने के बारे में डॉक्स में कुछ भी नहीं देख सकते हैं।

क्या यह सीपीथन के कार्यान्वयन में एक आकस्मिक विशेषता है, या यह व्यवहार निर्दिष्ट है?

उत्तर

8

यह पूरी तरह से निर्दिष्ट व्यवहार है, न कि आकस्मिक सुविधा। ऑपरेटर श्रृंखलन Comparison operators section में परिभाषित किया गया है:

तुलना मनमाने ढंग से श्रृंखलित जा सकता है, जैसे, x < y <= zx < y and y <= z के बराबर है, कि y को छोड़कर केवल एक बार मूल्यांकन किया जाता है (लेकिन दोनों ही मामलों z सब पर मूल्यांकन नहीं है जब x < y पाया जाता है झूठी होने के लिए)।

in तुलना ऑपरेटर में से एक है;

comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "<>" | "!=" 
        | "is" ["not"] | ["not"] "in" 

कोई अपवाद संयोजन खास मतलब नहीं हो सकता है के लिए बने हैं: एक ही अनुभाग से।

इस उदाहरण के रूप में उपयोग की जाने वाली विशिष्ट अभिव्यक्ति को 'a' in 'ab' and 'ab' in 'abc' के रूप में निष्पादित किया गया है, 'ab' शाब्दिक केवल एक बार निष्पादित (लोड) किया जा रहा है।

+0

मैं एक अलग पृष्ठ पर [तुलना] [https://docs.python.org/3/library/stdtypes.html#comparisons) अनुभाग देख रहा था, जो ' – Eric

+1

@Eric में सूचीबद्ध नहीं है उस खंड के नीचे: * एक ही वाक्य रचनात्मक प्राथमिकता के साथ दो और संचालन, 'इन' और 'इन नहीं', केवल अनुक्रम प्रकार (नीचे) द्वारा समर्थित हैं। * उस सीमा के कारण वे तालिका में सूचीबद्ध नहीं हैं। –

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