У прийнятій відповіді вже згадується PEP 238 . Я просто хочу додати швидкий погляд за лаштунками для тих, хто цікавиться тим, що відбувається, не читаючи цілого PEP.
Python карти операторів , як +, -, *і /до спеціальних функцій, таким чином, що , наприклад , a + bеквівалентно
a.__add__(b)
Що стосується поділу в Python 2, то за замовчуванням існує лише те, на /яке відображається, __div__а результат залежить від типів введення (наприклад int, float).
Python 2.2 представив __future__функцію division, яка змінила семантику поділу наступним чином (TL; DR PEP 238):
/карти, до __truediv__яких має "повернути розумне наближення математичного результату поділу" (цитата з PEP 238)
//карти в __floordiv__, які повинні повернути floored результат/
З Python 3.0 зміни PEP 238 стали поведінкою за замовчуванням, і більше немає спеціального методу __div__в об'єктній моделі Python.
Якщо ви хочете використовувати один і той же код у Python 2 та Python 3, використовуйте
from __future__ import division
і дотримуватися PEP 238 семантики /та //.