로부터 파이썬이 매뉴얼 :
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
이 동작은 언어 사양에 의해 지시됩니까, 아니면 구현 자에게 달려 있습니까?
언어 사양 이 없습니다 . 언어 참조는 말합니다 :
그렇지 않으면 다른 유형의 객체는 항상 같지 않고 일관되게 그러나 임의로 정렬됩니다.
따라서 구현 세부 사항입니다.
주요 Python 구현 사이에 차이점이 있습니까?
공식 CPython 구현 만 사용했기 때문에 대답 할 수는 없지만 PyPy와 같은 다른 Python 구현이 있습니다.
파이썬 언어 버전간에 차이가 있습니까?
Python 3.x에서 정수와 문자열을 주문하면 오류가 발생하도록 동작이 변경되었습니다.
>>> '10' > 5
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
'10' > 5
TypeError: unorderable types: str() > int()