2013-01-21 16 views
32

ich auf dieser Probe von Code aus einem radix sort kam:Zwei Schrägstriche in Python

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

Was bedeutet die '//' in Python tun?

+0

Mögliches Duplikat [Was bedeutet die "Variable // = ein Wert" Syntax in Python bedeuten?] (Http://stackoverflow.com/questions/40274205/what -does-the-variable-a-value-syntax-mean-in-python) – smci

Antwort

41

// ist der Etagenbetreiber. Er erzeugt das Floor des Quotienten seiner Operanden, ohne Gleitkomma-Rundung für ganzzahlige Operanden. Dies wird manchmal auch als Ganzzahldivision bezeichnet, obwohl Sie sie mit Gleitkommazahlen verwenden können, da Ganzzahlen mit / geteilt werden, die standardmäßig verwendet werden.

In Python 3 gibt der normale Divisionsoperator / Gleitkommawerte zurück, selbst wenn beide Operanden Ganzzahlen sind. Daher wird für die Unterteilung ein anderer Operator benötigt. Dies unterscheidet sich von Python 2, wobei / die Floor Division durchgeführt hat, wenn beide Operanden Integerwerte und Gleitkommadivision waren, wenn mindestens einer der Operanden ein Gleitkommawert war.

Der Operator // wurde zuerst für die Abwärtskompatibilität in Python 2.2 eingeführt, als entschieden wurde, dass Python 3 diese neue Fähigkeit haben sollte. Zusammen mit der Fähigkeit, den Python 3 Verhalten über from __future__ import division (auch in Python 2.2 eingeführt) zu ermöglichen, dies ermöglicht es Ihnen, Python 3-kompatibelen Code in Python 2.

+0

Um dem Kommentar um @DSM hinzuzufügen - '//' bedeutet auch Integer-Division in python2.x. Wenn Sie Integer-Division machen wollen, sollten Sie '//' anstelle von '/' verwenden, unabhängig davon, welche Version von Python Sie verwenden. – mgilson

+1

Es rundet gegen minus unendlich (d. H. Boden des Verhältnisses). Für negative Zahlen unterscheidet es sich von der ganzzahligen Division in C, die auf Null abrundet. http://python-history.blogspot.com/2010/08/why-pythons-integer-division-floors.html –

4

Sie können es einfach zu schreiben versuchen:

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

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

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

Dies sollte selbsterklärend sein.

(Dies ist in Python 2.7.)

+4

-1: Eine Möglichkeit, etwas herauszufinden, ist durch Versuch und Irrtum. Ein anderes ist, indem man fragt. – DilithiumMatrix

+0

Ein Weg, eine Frage zu beantworten, besteht darin, eine direkte Antwort zu geben, ein anderer, indem man auf die Richtung zeigt. Ich habe beides getan. – LWZ

+0

Ich versuche nur, Ihnen eine Erklärung für den Downvote und ein Feedback-Mann zu geben. Basierend auf dem -1 für deine Antwort, vs. +13 für das Akzeptierte ... Ich denke, viele Leute stimmen zu, dass du es auch nicht getan hast. (direkt oder Richtung). – DilithiumMatrix

Verwandte Themen