Verkettungs-Operator + oder ,
var1 = 'abc'
var2 = 'xyz'
print('literal' + var1 + var2) # literalabcxyz
print('literal', var1, var2) # literal abc xyz
... außer für die automatische Leerzeichen mit ',' was ist der Unterschied zwischen den beiden? Die zur Verwendung in der Regel auch, welche ist die Schnellste?
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
(Sie verwenden Python 3.x, wo print ist eine Funktion—in 2.x-print ist eine Anweisung. Es ist eine gute Idee zu erwähnen, die große Python-version—2.x oder 3.x—besonders, wenn um Hilfe zu bitten, da derzeit die meisten Menschen davon ausgehen 2.x, es sei denn, es ist ausdrücklich angegeben.)
Den ersten,
print('literal' + var1 + var2)
, wertet einen Ausdruck aus und übergibt ein einziges argument zu drucken. Die zweiteprint('literal', var1, var2)
nur geht drei Argumente zu drucken. Dies ist fast die gleiche Ausgabe rein zufällig: das ist wie print wirkt. Das zweite ist dabei nicht jede Verkettung, und einfach ausgeben jeder Wert durch ein Leerzeichen getrennt (die print-Standard-Verhalten).Explizit: das plus in der expression ist tun Verkettung, aber das Komma ist nicht tun Verkettung.
Timing: ich habe die unten stehenden Ergebnisse; ich denke jedoch, es ist voreingenommen, weil die strings sind so kurz (z.B. längere strings können in umgekehrter Folge), und in jedem Fall, Druck die Präsentation in der Frage wird nicht lange dauern (Sie erhalten bessere performance sorgen über viele anderem statt).
Hinweis: Verwendung
python -m timeit --help
für Anweisungen zur Verwendung timeit.Insbesondere feststellen, jede code geben wird, die genau die gleiche Ausgabe (es ist sinnlos zu vergleichen, wenn eine Methode gibt falsche Ergebnisse). Die StringIO ist eine einfache Möglichkeit, um nicht Druck auf den Bildschirm in diesen tests, aber es könnte die Ergebnisse beeinflusst auch.
Übergabe von strings als Argumente zu drucken, verbindet Sie mit der 'sep' Schlüsselwort. Standard ist '' (Leerzeichen).
Separator Schlüsselwort Python 3.x nur. Vor, dass das Trennzeichen immer ein Leerzeichen, außer in 2,5(?) und wo können Sie
from __future__ import print_function
oder sowas.Durch ein Komma gibt die print-Funktion mehrere Argumente (die in diesem Fall gedruckt werden alle, getrennt durch ein Leerzeichen. Mit dem plus wird ein argument für den Druck, Druck in seiner Gesamtheit.
Ich denke über das + wird am besten in diesem Fall.