Es todo lo más grande que ninguno? [duplicar]
-
19-09-2019 - |
Pregunta
Esta pregunta ya tiene una respuesta aquí:
- Un número menor que infinito negativo en Python? 1 respuesta
¿Hay un pitón tipo de datos incorporado, además None
, para los que:
>>> not foo > None
True
donde foo
es un valor de ese tipo? ¿Qué hay de Python 3?
Solución
None
es siempre menor que cualquier tipo de datos en Python 2 (ver object.c
).
En Python 3, esto fue cambiado; ahora hacer comparaciones sobre las cosas sin un ordenamiento natural sensibles resultados en una TypeError
. En la página 3.0 "Novedades" actualizaciones
Python 3.0 ha simplificado las reglas para ordenar las comparaciones:
Los operadores de comparación de pedidos (
<
,<=
,>=
,>
) provocará una excepciónTypeError
cuando los operandos no tienen un orden natural significativo. Por lo tanto, expresiones como:1 < ''
,0 > None
olen <= len
ya no son válidas, y por ejemplo,None < None
planteaTypeError
en vez de volverFalse
. Un corolario es que ordenar una lista heterogénea ya no tiene sentido - todos los elementos deben ser comparables entre sí. Tenga en cuenta que esto no se aplica a los operadores==
y!=
:. Objetos de diferentes tipos incomparables siempre comparan desiguales entre sí
Esto molestó a algunas personas, ya que a menudo era útil para hacer cosas como ordenar una lista que tenía algunos valores None
en ella, y tienen los valores None
aparecen agrupados juntos al principio o al final. Había un hilo en la lista de correo de este hace un tiempo, pero el punto final es que Python 3 intenta evitar tomar decisiones arbitrarias acerca de la adquisición (que es lo que ha pasado mucho en Python 2).