當兩個運算元都是整數時,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