La respuesta aceptada ya menciona PEP 238 . Solo quiero agregar un vistazo rápido detrás de escena para aquellos interesados en lo que está sucediendo sin leer todo el PEP.
Python mapas de operadores como +
, -
, *
y /
para funciones especiales, como por ejemplo, que a + b
es equivalente a
a.__add__(b)
Con respecto a la división en Python 2, solo hay de forma predeterminada /
qué mapas __div__
y el resultado depende de los tipos de entrada (por ejemplo int
,float
).
Python 2.2 introdujo la __future__
característica division
, que cambió la semántica de división de la siguiente manera (TL; DR de PEP 238):
/
mapas a los __truediv__
que debe "devolver una aproximación razonable del resultado matemático de la división" (cita de PEP 238)
//
asigna a __floordiv__
, que debería devolver el resultado de/
Con Python 3.0, los cambios de PEP 238 se convirtieron en el comportamiento predeterminado y no hay un método más especial __div__
en el modelo de objetos de Python.
Si desea usar el mismo código en Python 2 y Python 3, use
from __future__ import division
y se adhieren a la semántica PEP 238 de /
y //
.