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 + bes 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 //.