我正在阅读http://learnpythonthehardway.org/book/ex37.html但我不明白该//=
符号的作用。 /=
我感觉合理:
a = 9
a /= 3
a == 3 # => True
但//=
a = 9
a //= 3
a == 3 # => Also True
谢谢。
我正在阅读http://learnpythonthehardway.org/book/ex37.html但我不明白该//=
符号的作用。 /=
我感觉合理:
a = 9
a /= 3
a == 3 # => True
但//=
a = 9
a //= 3
a == 3 # => Also True
谢谢。
//
在 python3 中用作“整数除法”,看看这个答案。
在 C 中,/
对整数的除法作为“带地板的除法”或“整数除法”。为了提供这种能力,python 提供了//
运算符,不像/
它会给出浮点结果。
权威参考当然是pep-238。
从命令行版本(当你试图弄清楚这样的事情时很有用):
Python 3.2.3 (default, Apr 11 2012, ...
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 10
>>> a/3
3.3333333333333335
>>> a//3
3
>>>
/
如您所知,经典除法。//
运算符是在 Python 2.2 中添加的,它执行地板除法,并且通过添加此运算符,您可以使用该运算符from __future__ import division
使/
运算符进行true
除法。
a //= 3
相当于a = a // 3
。
所以,这里是总结:
Python Version operator / operator //
-------------------------------------------------
2.1x and older classic Not Added
2.2 and newer classic floor
(without import)
2.2 and newer true floor
(with import)
//
是地板除法:它除法并向下舍入,但如果操作数是浮点数,它仍然会产生一个浮点数。在 Python 2 中,它与整数的常规除法相同,除非您使用它from __future__ import division
来获得 Python 3 的“真正”除法行为。
所以,是的,这有点复杂。本质上,它存在通过将两个整数相除来重新创建您在 Python 2 中获得的行为,因为这在 Python 3 中发生了变化。
在 Python 2 中:
11 / 5
→2
11.0 / 5.0
→2.2
11 // 5
→2
11.0 // 5.0
→2.0
在 Python 3或带有 的 Python 2或from __future__ import division
带有的Python 2 中运行:-Q new
11 / 5
→2.2
11.0 / 5.0
→2.2
11 // 5
→2
11.0 // 5.0
→2.0
而且,当然,添加=
just 会将其变成一个组合赋值运算符,例如/=
.