Das Verhalten von Python 2 beim Vergleich von Objekten unterschiedlicher Typen kann verwirrend sein, basiert aber auf den Implementierungsdetails, die in der Sprachspezifikation bereitgestellt werden.
Beim Vergleich unterschiedlicher Objekte Typen verwendet Python 2 die folgende Reihenfolge:
Zur Veranschaulichung:
print "100" < "2" # True (lexicographic) print "5" > "9" # False (lexicographic) print "100" < 2 # False (numeric first) print 100 < "2" # True (numeric first, lexicographic second) print 5 > "9" # False (lexicographic) print "5" > 9 # True (numeric first, lexicographic second) print [] > float('inf') # True (non-numeric ordering) print () > [] # True (non-numeric ordering)
Dieses Verhalten wird durch die CPython-Implementierung von Python 2 vorgeschrieben. Die Sprachspezifikation besagt, dass Objekte verschiedener Typen „willkürlich, aber konsistent“ angeordnet werden, wobei die Details der Implementierung überlassen werden.
In Python 3 führen Vergleiche zwischen Ganzzahlen und Zeichenfolgen zu einem Fehler. Andere Implementierungen von Python können ebenfalls ein etwas anderes Verhalten aufweisen.
Das obige ist der detaillierte Inhalt vonWie vergleicht Python 2 Objekte unterschiedlichen Typs?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!