擅长:python、mysql、java
<p>它实现了所谓的<code>floor division</code>。Floor division(这里用<code>//</code>表示)截断小数并返回整数结果,而“normal”division返回您可能“期望”的答案(带小数)。在Python3.x中,这两个操作符之间的区别更大,这意味着这两个操作符返回的结果不同。下面是使用Python3的示例:</p>
<pre><code>>>> 10 / 3
3.3333333333333335
>>> 10 // 3
3
</code></pre>
<p>在Python 3.x之前,这两者没有区别,除非您使用特殊的内置<code>from __future__ import division</code>,这使得除法运算符的执行与python3.x中的一样(这是使用Python 2.6.5):</p>
<pre><code>In [1]: 10 / 3
Out[1]: 3
In [2]: 10 // 3
Out[2]: 3
In [3]: from __future__ import division
In [4]: 10 / 3
Out[4]: 3.3333333333333335
In [5]: 10 // 3
Out[5]: 3
</code></pre>
<p>因此,当您看到类似<code>n //= 10</code>的内容时,它使用的是您可能已经看到的相同的<code>+=</code>/<code>-=</code>/<code>*=</code>/etc语法,其中它接受<code>n</code>的当前值,并在等号之前执行操作,将以下变量作为第二个参数,将结果返回到<code>n</code>。例如:</p>
<pre><code>In [6]: n = 50
In [7]: n += 10
In [8]: n
Out[8]: 60
In [9]: n -= 20
In [10]: n
Out[10]: 40
In [11]: n //= 10
In [12]: n
Out[12]: 4
</code></pre>