師
當兩個運算元都是整數時,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
請注意,因為 a
和 b
都是 int
s,結果是 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
可能的組合(內建型別):
int
和int
(在 Python 2 中提供int
,在 Python 3 中提供float
)int
和float
(給一個float
)int
和complex
(給一個complex
)float
和float
(給一個float
)float
和complex
(給一個complex
)complex
和complex
(給一個complex
)
有關更多資訊,請參閱 PEP 238 。