В принятом ответе уже упоминается PEP 238 . Я просто хочу добавить быстрый взгляд за кулисы для тех, кто интересуется происходящим, не читая весь ПКП.
Python карты операторов , как +, -, *и /к специальным функциям, таким образом, что , например , a + bэквивалентно
a.__add__(b)
Что касается деления в Python 2, по умолчанию существует только то, /что отображается на, __div__и результат зависит от типов ввода (например int, float).
В Python 2.2 появилась __future__функция division, которая изменила семантику деления следующим образом (TL; DR из PEP 238):
/карты, на __truediv__которые необходимо «возвращать разумное приближение математического результата деления» (цитата из PEP 238)
//карты __floordiv__, которые должны вернуть результат/
В Python 3.0 изменения PEP 238 стали поведением по умолчанию, и __div__в объектной модели Python больше нет специального метода .
Если вы хотите использовать один и тот же код в Python 2 и Python 3, используйте
from __future__ import division
и придерживаться семантики PEP 238 /и //.