师
当两个操作数都是整数时,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 都是 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
可能的组合(内置类型):
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 。