//
.
При делении одного целого числа на другое целое число в Python, поведение зависит от используемой версии Python и оператора деления.
В Python 3 (и Python 2.7 с явным импортом `from __future__ import division`):
/
(обычное деление) всегда возвращает число с плавающей точкой (float), даже если результат математически является целым числом.//
(целочисленное деление или деление нацело) возвращает целое число (int), представляющее собой целую часть от результата деления. Остаток отбрасывается. Если хотя бы один из операндов является числом с плавающей точкой, то возвращается float.divmod(a, b)
возвращает кортеж, содержащий результат целочисленного деления (a // b) и остаток от деления (a % b).В Python 2 (без `from __future__ import division`):
/
(обычное деление) выполняет целочисленное деление, если оба операнда являются целыми числами. Результат – целое число, полученное отбрасыванием дробной части. Если хотя бы один операнд - число с плавающей точкой, то выполняется обычное деление и результат - float.//
(целочисленное деление) ведет себя также, как оператор /
в Python 3 (и Python 2.7 с импортом `from __future__ import division`).Примеры (Python 3):
10 / 2
вернет 5.0
(float)10 // 2
вернет 5
(int)10 / 3
вернет 3.3333333333333335
(float)10 // 3
вернет 3
(int)10.0 // 3
вернет 3.0
(float)divmod(10, 3)
вернет (3, 1)
(кортеж)Важно помнить об этом различии, чтобы избежать неожиданных результатов при делении целых чисел, особенно при портировании кода между Python 2 и Python 3.