师
当两个操作数都是整数时,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 。