Python中的两个正斜杠

时间:2013-01-21 17:56:40

标签: python floor-division

我从radix sort发现了这段代码:

def getDigit(num, base, digit_num):
    # pulls the selected digit
    return (num // base ** digit_num) % base

//”在Python中做了什么?

2 个答案:

答案 0 :(得分:48)

//是场内分部运营商。它生成其操作数的商的底数,而不对整数操作数进行浮点舍入。这有时也被称为整数除法,即使你可以将它与浮点数一起使用,因为默认情况下用/除以整数。

在Python 3中,普通的/除法运算符返回浮点值,即使两个操作数都是整数,因此底层除法需要不同的运算符。这与Python 2不同,其中/执行分层,如果两个操作数都是整数,则浮点除法,如果至少有一个操作数是浮点值。

当确定Python 3应具备此新功能时,//运算符首先在Python 2.2中引入了向前兼容性。结合通过from __future__ import division(也在Python 2.2中引入)启用Python 3行为的能力,这使您能够在Python 2中编写与Python 3兼容的代码。

答案 1 :(得分:4)

你可以尝试一下:

In []: 5/2
Out[]: 2

In []: 5.0/2
Out[]: 2.5

In []: 5.0//2
Out[]: 2.0

这应该是不言自明的。

(这是在Python 2.7中。)