2016-04-04 6 views
-1

Manchmal sehe ich die Verwendung als solche:Was ist der Unterschied zwischen `%` und `,` in Python-Formatierern?

a = "foo" 
b = "bar" 
print "%s, %s" %(a, b) 

und manchmal wie:

print "%s, %s", (a, b) 

Gibt es einen Unterschied hinter den Kulissen?

+1

I bevorzugen '{0}'. format (a) – rocksteady

+4

Das zweite Beispiel macht nicht dasselbe wie das erste, also gibt es da einen offensichtlichen Unterschied: Vielleicht denken Sie an einen anderen Kontext als 'print'? Vielleicht in die 'Logging'-Bibliothek oder der Datenbankzugriff oder etwas anderes? –

+0

Der zweite Code ist kein Python-Formatierer. Der erste ist ein String-Formatierer. Er erstellt den neuen String als Parameter für die Druckfunktion. (a, b) ist der zweite Parameter der Funktion p Rint – qvpham

Antwort

2

Sie drucken verschiedene Dinge:

>>> print "%s, %s" %(a, b) 
foo, bar 
>>> print "%s, %s", (a, b) 
%s, %s ('foo', 'bar') 

Die erste verwendet die Zeichenfolge "%s, %s" und verwendet die Zeichenfolge Formatierung Operator % die Werte a und b in die Format-Platzhalter einzufügen. Diese resultierende Zeichenfolge wird dann mit der print-Anweisung gedruckt.

Die zweite übergibt zwei Dinge an die print-Anweisung: Die Zeichenfolge "%s, %s" und ein Tupel (a, b). Diese beiden Dinge werden unabhängig voneinander gedruckt, so dass hier keine String-Formatierung stattfindet.

0

Es ist wahrscheinlich am besten, stattdessen mit .format() zu beginnen.

dh:. Print ('{} {}' Format (a, b)

Kümmert sich um eine Menge von Problemen sowie nicht um Zeichenfolge zu kümmern, dezimal usw.

Verwandte Themen