3

http://learnpythonthehardway.org/book/ex37.htmlを読んでいますが、//=シンボル の機能がわかりません。/=私には理にかなっています:

a = 9
a /= 3
a == 3 # => True

しかし//=

a = 9
a //= 3
a == 3 # => Also True

ありがとう。

4

3 に答える 3

4

//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
>>>
于 2013-02-11T20:19:05.213 に答える
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)
于 2013-02-11T20:19:34.070 に答える
0

//は床除算です。オペランドが浮動小数点数の場合でも浮動小数点数が生成されますが、除算と切り捨てが行われます。from __future__ import divisionPython 2 では、 Python 3 の「真の」除算動作を取得するために使用しない限り、整数の通常の除算と同じです。

そうです、これは少し複雑です。基本的に、2 つの整数を除算することによって Python 2 で得られる動作を再現するために存在します。これは、Python 3 で変更されるためです。

Python 2 の場合:

  • 11 / 52
  • 11.0 / 5.02.2
  • 11 // 52
  • 11.0 // 5.02.0

Python 3、またはPython 2 with from __future__ import divisionまたはPython 2 run with -Q new:

  • 11 / 52.2
  • 11.0 / 5.02.2
  • 11 // 52
  • 11.0 // 5.02.0

そしてもちろん、=just を追加すると、 のようなコンボ代入演算子になり/=ます。

于 2013-02-11T20:24:58.647 に答える