Unterschied zwischen Python-Druck- / Formatmethoden

8

Beim Kombinieren einer Variablen und einer Zeichenfolge, die in Python gedruckt werden sollen, scheint es verschiedene Möglichkeiten zu geben, dasselbe zu tun:

%Vor%

Was (wenn überhaupt) ist der Unterschied zwischen diesen Methoden in Bezug auf Leistung, Kompatibilität und allgemeine Präferenz. Selbst zwischen Open-Source-Projekten scheinen alle drei Methoden austauschbar zu sein.

    
Smudge 05.08.2011, 17:43
quelle

3 Antworten

8

Wie Sie bereits erwähnt haben, verwenden verschiedene Open-Source-Projekte alle diese Methoden für die Formatierung von Zeichenfolgen. Ich würde mich jedoch an eine Methode für ein Projekt halten, um andere Entwickler nicht mit unterschiedlichen Stilen zu verwirren.

print test+" World" ist die leistungsstärkste Lösung, bietet jedoch die geringste Flexibilität.

print "%s World" % test #Prints 'Hello World' ist im Grunde wie C's sprintf , was String-Interpolation macht. Ich benutze diese Methode sehr gerne, da Sie nicht nur eine normale Zeichenkette, sondern ein Wörterbuch einlesen können.

print "Good morning %(name), there are %(count)d new articles in %(topic)s today. Would you like to <a href='%(url)s'>read them</a>?" % values

Ich habe "{} World".format(test) nicht persönlich benutzt.

In realen Anwendungen ist der Leistungsunterschied zwischen diesen Methoden unbedeutend, und es geht wirklich darum, Stil einzuhalten und nicht zu übercodieren.

    
jontsai 05.08.2011, 17:51
quelle
8

Ein kleiner Maßstab:

%Vor%

Scheint so, als ob b und c am schnellsten sind, nach d ist ein überraschend langsamster.

Aber, wenn Sie nicht viel bearbeiten, ist es nicht wirklich wichtig, welche zu verwenden, nur ist es besser, sie nicht zu mischen.

Ich persönlich bevorzuge "".join nur für einfache Konzentrationen und str.format für die Platzierung von Werten wie "Hello, my name is {}.".format(name) .

Es gab ein Gerücht, dass % Formatierung in Python 3 veraltet und entfernt wird, aber nicht.

    
utdemir 05.08.2011 18:07
quelle
1

Soweit ich weiß, ist das dritte Element für das erste Element veraltet, wie in den Python-Dokumenten erklärt. Es wird in Python 3.x und höher entfernt. Die zweite ist wirklich zwei Aussagen zusammen, eine String-Verkettung und eine print-Anweisung der Zeichenfolge.

Aktualisierung:

Es scheint, dass meine Informationen ein wenig aus sind. Aus der Was ist neu in Python 3.0 Seite:

  

PEP 3101: Erweiterte String-Formatierung. Hinweis: Die 2.6 Beschreibung   erwähnt die format () -Methode für 8-Bit- und Unicode-Strings. Im   3.0, unterstützt nur den str-Typ (Zeichenketten mit Unicode-Unterstützung)   diese Methode; der Byte-Typ nicht. Der Plan ist es schließlich zu machen   Dies ist die einzige API für die Formatierung von Zeichenfolgen und startet die Einstellung der   % Operator in Python 3.1.

    
Spencer Rathbun 05.08.2011 17:55
quelle

Tags und Links