จากคู่มือpython 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
ลักษณะการทำงานนี้ได้รับคำสั่งจากสเป็คภาษาหรือไม่นั้นขึ้นอยู่กับผู้ใช้งานหรือไม่
นอกจากนี้ไม่มีสเปคภาษา การอ้างอิงภาษาพูดว่า:
มิฉะนั้นวัตถุประเภทต่าง ๆ จะเปรียบเทียบไม่เท่ากันเสมอและมีการเรียงลำดับอย่างสม่ำเสมอ แต่โดยพลการ
ดังนั้นจึงเป็นรายละเอียดการใช้งาน
มีความแตกต่างระหว่างการใช้งาน Python ที่สำคัญหรือไม่?
ฉันไม่สามารถตอบคำถามนี้ได้เพราะฉันเพิ่งใช้การติดตั้ง CPython อย่างเป็นทางการเท่านั้น แต่มีการใช้งานอื่น ๆ ของ Python เช่น 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()