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 で床割りを行う operator が追加され、この operator を追加することで、 operator に割り算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)
//
は床除算です。オペランドが浮動小数点数の場合でも浮動小数点数が生成されますが、除算と切り捨てが行われます。from __future__ import division
Python 2 では、 Python 3 の「真の」除算動作を取得するために使用しない限り、整数の通常の除算と同じです。
そうです、これは少し複雑です。基本的に、2 つの整数を除算することによって 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 with from __future__ import division
、またはPython 2 run with -Q new
:
11 / 5
→2.2
11.0 / 5.0
→2.2
11 // 5
→2
11.0 // 5.0
→2.0
そしてもちろん、=
just を追加すると、 のようなコンボ代入演算子になり/=
ます。