Python: valores máximos y mínimos utilizables
Python 2.x permite comparar tipos heterogéneos.
Un atajo útil (en Python 2.7 aquí) es queNone
compara más pequeño que cualquier valor entero o flotante:
<code>>>> None < float('-inf') < -sys.maxint * 2l < -sys.maxint True </code>
Y en Python 2.7 una tupla vacía.()
es un valor infinito:
<code>>>> () > float('inf') > sys.maxint True </code>
Este método abreviado es útil cuando uno puede ordenar una lista mixta de entradas y flotantes y desea tener un mínimo absoluto y un máximo para hacer referencia.
Sin embargo, este acceso directo se ha eliminado en Python 3000 (esto es Python 3.2):
<code>>>> None < 0 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unorderable types: NoneType() < int() </code>
Además, Python3000ha eliminado sys.maxint
En la teoría de que todas las promesas promueven los largos y el límite ya no se aplica.
PEP 326, Un caso para los valores superior e inferior, avanzó una referencia min y max en Python. El nuevo comportamiento de pedido.documentado.
Desde que se rechazó PEP 326, ¿cuáles son las definiciones útiles y utilizables para un valor mínimo y máximo que funcionan con enteros y flotantes y largos en Python 2X y Python 3000?
Editar
Varias respuestas están en la línea de "solo use maxv = float ('inf')" ... La razón por la que estoy pensando, por remota que sea la posibilidad, es esta:
<code>>>> float(2**5000) Traceback (most recent call last): File "<stdin>", line 1, in <module> OverflowError: long int too large to convert to float </code>
Y:
<code>>>> cmp(1.0**4999,10.0**5000) Traceback (most recent call last): File "<stdin>", line 1, in <module> OverflowError: (34, 'Result too large') </code>
Todavía:
<code>>>> () > 2**5000 True </code>
Con el fin de cmp a un valor flotante,float('inf')
, el valor largo tendría que convertirse en un flotador y la conversión causaría unOverflowError
...
Conclusión
Gracias a todos por sus respuestas y comentarios. Escogí TryPyPy'sresponder porque parecía estar más en línea con lo que estaba preguntando: un valor absoluto máximo y absoluto, tal como se describe en la Wikipediaentrada en el infinito.
Con esta pregunta, aprendí que un valor largo o int no se convierte a un valor flotante para completar la comparación defloat('inf') > 2**5000
. No sabía eso.