2016-04-06 12 views
2

Gibt es etwas los, wenn Zeichenfolge Formatierung, die die Modul-Funktion verwendet beim Aufruf entwederString Formatierung mit Modul/Prozentzeichen

StringOperand % TupleOperand oder

StringOperand % DictionaryOperand

Oder ist es nur eine willkürliche Verwendung von% für die String-Formatierungsfunktion?

Ich vermute, dass die Zeichenfolge Formatierung Bediener nicht ein Aufruf an modularer Arithmetik wie die folgende ist:

tuple = (1,2,3) 
print '%d %d %d'%tuple 

Druck: 1 2 3, aber

print '%d %d %d %d'%tuple 

kehrt Typeerror: nicht genug Argumente für das Format str

+3

Dies wird * Operator Überladung * genannt und ist in Python üblich. Eine Klasse kann einen Operator implementieren, indem sie eine spezielle Methode implementiert, in diesem Fall '__mod __()'. Probieren Sie zum Beispiel "print" hallo "* 3". Siehe auch https://docs.python.org/2/library/operator.html – cdarke

Antwort

3

Dies ist operator overloading. Worüber du sprichst, ist die eingebaute Sprache, aber du kannst die Methoden selbst überladen. ZB Überlast + Operator, der in Python durch __add__ Verfahren eingerichtet:

class YourMath(object): 
    def __init__(self, param): 
     self.param = param 

    def __add__(self, x): 
     return int(str(self.param) + str(x.param)) # concatenation 


x = YourMath(5) 
y = YourMath(4) 

+ wird statt Summe bis verketten. Ergebnis von x+y in diesem Fall ist 54.

+0

Ist dies ein Beispiel für das Überladen von Operatoren: "import math as m"? –

+0

Nein "Import math as m" ist der Import von 'math' Modul mit Alias' m' –