разделение

Python выполняет целочисленное деление, когда оба операнда являются целыми числами. Поведение операторов деления Python изменились с 2.x и 3.x Python (также см https://codecamp.ru/documentation/python/809/incompatibilities-moving-from-python-2-to-python-3/ 2797 / целочисленное деление ).

 a, b, c, d, e = 3, 2, 2.0, -3, 10

 

В Python 2 результат оператора '/' зависит от типа числителя и знаменателя. a / b # = 1 a / c # = 1,5 d / b # = -2 b / a # = 0 d / e # = -1 Обратите внимание, что поскольку `a` и` b` являются `int`s, Результатом является `int`. Результат всегда округляется до нуля. Поскольку `c` является float, результатом` a / c` является `float`. Вы также можете использовать модуль оператора: оператор оператора # # модуль оператора предоставляет арифметические функции с двумя аргументами operator.div (a, b) # = 1 оператор .__ div __ (a, b) # = 1

Что делать, если вы хотите разделить поплавки:

Рекомендуемые:

 from __future__ import division # applies Python 3 style division to the entire module
a / b                  # = 1.5 
a // b                 # = 1

 

Хорошо (если вы не хотите применять ко всему модулю):

 a / (b * 1.0)          # = 1.5
1.0 * a / b            # = 1.5
a / b * 1.0            # = 1.0    (careful with order of operations)

from operator import truediv
truediv(a, b)          # = 1.5

 

Не рекомендуется (может вызывать TypeError, например, если аргумент сложный):

 float(a) / b           # = 1.5
a / float(b)           # = 1.5


 

Оператор «//» в Python 2 вызывает разделение по этажам независимо от типа. a // b # = 1 a // c # = 1.0

В Python 3, / оператор выполняет «истинные» разделения независимо от типа. // оператор выполняет вольные деление и поддерживает тип.

 a / b                  # = 1.5 
e / b                  # = 5.0
a // b                 # = 1
a // c                 # = 1.0

import operator            # the operator module provides 2-argument arithmetic functions
operator.truediv(a, b)     # = 1.5
operator.floordiv(a, b)    # = 1
operator.floordiv(a, c)    # = 1.0

 

Возможные комбинации (встроенные типы):

  • int и int (дает int в Python 2 и float в Python 3)
  • int и float (дает float )
  • int и complex (дает complex )
  • float и float (дает float )
  • float и complex (дает complex )
  • complex и complex (дает complex )

См PEP 238 для получения дополнительной информации.