Le comportement de Python 2 lors de la comparaison d'objets de différents types peut prêter à confusion, mais il est basé sur les détails d'implémentation fournis par la spécification du langage.
Lors de la comparaison d'objets de différents types, Python 2 utilise l'ordre suivant :
Pour illustrer :
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)
Ce comportement est mandaté par l'implémentation CPython de Python 2. La spécification du langage indique que les objets de différents types sont ordonnés « arbitrairement mais systématiquement », laissant les détails à l'implémentation.
Dans Python 3, les comparaisons entre les entiers et les chaînes génèrent une erreur. D'autres implémentations de Python peuvent également avoir un comportement légèrement différent.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!