[pyar] Diferencias en versiones de Python

Claudio Freire klaussfreire en gmail.com
Lun Dic 6 20:29:25 ART 2010


2010/12/6 Esteban Kuber <ekuber en gmail.com>

> La serie 2 utiliza división por enteros y muestra él valor con __repr__ por
> default en la consola. Python 3 utiliza __str__ para los números y tiene
> división decimal por defecto. Esto lo podes tener en 2.5 (creo, sino 6) en
> adelante haciendo from __future__ import division.
> Lo del valor no te cambia en nada, los resultados de los cálculos en
> memoria son los mismos.
>
Lo del redondeo no es sólo eso, en cierta versión (¿3.0?) modificaron
__repr__ para que elija la representación más corta, lo que usualmente
llevaba a la representación más acorde a lo que se buscaba: ej,
round(2.932224,2) = 2.93 en vez de 2.9300000000000002.

El tema es que portaron ese cambio a versiones 2.x, y a veces resulta en
comportamiento inesperado, aunque correcto. Por ejemplo por eso a mí algunos
doctest en 2.7 no me funcionan. Sí, ya se, un doctest que se base en la
representación exacta de los flotantes es mala idea, pero... bue... no puedo
usar 2.7 por otras razones igual así que no me caliento.

A veces, cuando pasás por representaciones en cadena (ej: json) sí te cambia
los resultados en memoria. Así que no es trivial el asunto. Si usás los
números tal cual te vienen, claro, no debería preocupar.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20101206/e8c1c9d8/attachment.html>


More information about the pyar mailing list