से अजगर 2 मैनुअल :
CPython कार्यान्वयन विवरण: संख्याओं को छोड़कर विभिन्न प्रकारों की वस्तुओं को उनके प्रकार के नामों द्वारा आदेशित किया जाता है; समान प्रकार की वस्तुएं जो उचित तुलना का समर्थन नहीं करती हैं, उनके पते द्वारा आदेशित हैं।
जब आप दो तार या दो संख्यात्मक प्रकार का ऑर्डर करते हैं तो ऑर्डरिंग अपेक्षित तरीके से की जाती है (स्ट्रिंग के लिए लेक्सिकोग्राफ़िक ऑर्डरिंग, पूर्णांक के लिए संख्यात्मक ऑर्डरिंग)।
जब आप एक संख्यात्मक और एक गैर-संख्यात्मक प्रकार का आदेश देते हैं, तो संख्यात्मक प्रकार पहले आता है।
>>> 5 < 'foo'
True
>>> 5 < (1, 2)
True
>>> 5 < {}
True
>>> 5 < [1, 2]
True
जब आप दो असंगत प्रकारों का आदेश देते हैं, जहां न तो संख्यात्मक होते हैं, तो वे उनके टाइपनामों के वर्णानुक्रम द्वारा आदेशित होते हैं:
>>> [1, 2] > 'foo' # 'list' < 'str'
False
>>> (1, 2) > 'foo' # 'tuple' > 'str'
True
>>> class Foo(object): pass
>>> class Bar(object): pass
>>> Bar() < Foo()
True
एक अपवाद पुरानी शैली की कक्षाएं हैं जो हमेशा नई शैली की कक्षाओं से पहले आती हैं।
>>> class Foo: pass # old-style
>>> class Bar(object): pass # new-style
>>> Bar() < Foo()
False
क्या यह व्यवहार भाषा की युक्ति द्वारा अनिवार्य है, या यह कार्यान्वयनकर्ताओं पर निर्भर है?
नहीं है कोई भाषा विनिर्देश । भाषा संदर्भ का कहना है:
अन्यथा, विभिन्न प्रकारों की वस्तुएं हमेशा असमान की तुलना करती हैं, और लगातार लेकिन मनमाने ढंग से ऑर्डर की जाती हैं।
तो यह एक कार्यान्वयन विवरण है।
क्या किसी भी प्रमुख पायथन कार्यान्वयन के बीच अंतर हैं?
मैं इसका उत्तर नहीं दे सकता क्योंकि मैंने केवल आधिकारिक CPython कार्यान्वयन का उपयोग किया है, लेकिन Python के अन्य कार्यान्वयन भी हैं जैसे PPPy।
क्या पायथन भाषा के संस्करणों के बीच अंतर हैं?
पायथन 3.x में व्यवहार को बदल दिया गया है ताकि पूर्णांक और एक स्ट्रिंग को क्रम में लाने का प्रयास एक त्रुटि उठाएगा:
>>> '10' > 5
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
'10' > 5
TypeError: unorderable types: str() > int()