当两个操作数都是整数时,Python 会进行整数除法。Python 的除法运算符的行为已从 Python 2.x 和 3.x 改变(另请参见整数除法 )。

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

Python 2.x <= 2.7

在 Python 2 中,’/‘运算符的结果取决于分子和分母的类型。

a / b                  # = 1 

a / c                  # = 1.5

d / b                  # = -2

b / a                  # = 0

d / e                  # = -1

请注意,因为 ab 都是 ints,结果是 int

结果总是向下舍入(覆盖)。

因为 c 是一个浮点数,a / c 的结果是 float

你也可以使用运算符模块:

import operator        # the operator module provides 2-argument arithmetic functions
operator.div(a, b)     # = 1
operator.__div__(a, b) # = 1

Python 2.x >= 2.2

如果你想浮动分割怎么办:

推荐的:

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.x >= 2.2

Python 2 中的’//‘运算符强制不管类型如何都会进行分区。

a // b                # = 1
a // c                # = 1.0

Python 3.x >= 3.0

在 Python 3 中,/运算符执行’true’除法,无论类型如何。//运算符执行分层并保持类型。

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

可能的组合(内置类型):

  • intint(在 Python 2 中提供 int,在 Python 3 中提供 float
  • intfloat(给一个 float
  • intcomplex(给一个 complex
  • floatfloat(给一个 float
  • floatcomplex(给一个 complex
  • complexcomplex(给一个 complex

有关更多信息,请参阅 PEP 238