web-dev-qa-db-ja.com

Pythonの2つのスラッシュ

基数ソート からこのサンプルコードに出会いました:

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

Pythonでは '//'は何をしますか?

39
Biff

_//_は階除算演算子です。整数オペランドの浮動小数点丸めなしで、オペランドの商の下限を生成します。これは、整数を_/_で除算するのがデフォルトで使用されるため、浮動小数点数で使用できる場合でも、整数除算とも呼ばれます。

Python 3では、通常の_/_除算演算子は、両方のオペランドが整数であっても浮動小数点値を返すため、フロア除算には異なる演算子が必要です。これは、Python 2とは異なります。ここで_/_は、両方のオペランドが整数である場合にフロア除算を実行し、オペランドの少なくとも1つが浮動小数点値である場合に浮動小数点除算を実行します。

_//_演算子は、Python 3にこの新しい機能が必要であると決定されたときに、Python 2.2で前方互換性のために最初に導入されました。 _from __future__ import division_(Python 2.2でも導入)を介してPython 3の動作を有効にする機能とともに、これによりPython 3- Pythonの互換コード2。

51
sepp2k

あなたはそれを試すことができます:

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

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

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

これは一目瞭然です。

(これはPython 2.7にあります。)

4
LWZ