Verkettung Operator + oder,

8
%Vor%

... außer für automatische Leerzeichen mit ',' was ist der Unterschied zwischen den beiden? Was normalerweise zu verwenden, auch welches ist am schnellsten?

Danke

    
3zzy 09.01.2010, 11:57
quelle

3 Antworten

21

(Sie verwenden Python 3.x, wobei print eine Funktion ist - in 2.x ist print eine Anweisung. Es ist eine gute Idee, die Hauptversion von Python - 2.x oder 3.x - zu erwähnen, besonders wenn um Hilfe bitten, weil die meisten Leute vernünftigerweise von 2.x ausgehen, es sei denn, es wird angegeben.)

Die erste, print('literal' + var1 + var2) , wertet einen Ausdruck aus und übergibt ein einzelnes Argument zum Drucken. Die zweite, print('literal', var1, var2) , übergibt einfach drei Argumente zum Drucken. Das ist fast die selbe Ausgabe rein zufällig: So funktioniert der Druck. Die zweite führt keine Verkettung durch und gibt einfach jeden Wert aus, der durch ein Leerzeichen getrennt ist (was das Standardverhalten von print ist).

Um explizit zu sein: das Pluszeichen im Ausdruck ist , um eine Verkettung durchzuführen, aber das -Komma führt keine Verkettung durch.

Timing: Ich habe die Ergebnisse unten erhalten. Ich glaube jedoch, dass dies verzerrt ist, weil die Saiten so kurz sind (zB längere Saiten könnten das Ergebnis umkehren), und in jedem Fall dauert das Drucken in der Frage nicht lange (Sie werden sich um viele andere Dinge statt).

Hinweis: Verwenden Sie python -m timeit --help für Anweisungen zur Verwendung von timeit.

%Vor%

Beachten Sie insbesondere, dass jeder Code die gleiche Ausgabe liefert (es ist sinnlos zu vergleichen, wenn eine Methode die falschen Ergebnisse liefert ). Das StringIO ist eine einfache Möglichkeit, in diesen Tests nicht auf den Bildschirm zu drucken, es könnte aber auch Auswirkungen auf die Ergebnisse haben.

    
Roger Pate 09.01.2010, 12:07
quelle
5

Wenn Strings als Argumente zum Drucken übergeben werden, werden sie mit dem Schlüsselwort 'sep' verknüpft. Standard ist '' (Leerzeichen).

Das Trennzeichen-Schlüsselwort ist nur Python 3.x. Davor ist das Trennzeichen immer ein Leerzeichen, außer in 2.5 (?) Und oben, wo du from __future__ import print_function oder so ähnlich finden kannst.

%Vor%     
Tor Valamo 09.01.2010 12:00
quelle
1

Die Verwendung eines Kommas gibt der Druckfunktion mehrere Argumente (die in diesem Fall alle getrennt durch ein Leerzeichen gedruckt werden. Mit dem Plus wird ein Argument für den Druck erstellt, das in seiner Gesamtheit gedruckt wird. Ich denke, die Verwendung des + ist in diesem Fall am besten.

    
rael_kid 09.01.2010 11:59
quelle