2017-05-26 2 views
2

Verwirrt mit Python-Verhalten. betrachtet dieses Beispiel:Python-String-Zuweisung in Anführungszeichen

>>>a = "ww" "xx" 
>>>print(a) 
wwxx 

>>>b = "yy" "xx" 
>>>print(b) 
yyxx 

>>>c = a b 
    File "<stdin>", line 1 
    c = a b 
     ^
SyntaxError: invalid syntax 

Ich war wwxxyyxx ein Ergebnis zu erwarten.

Aber bekam einen Syntaxfehler.

Gibt es einen Unterschied zwischen ihnen (String Literal und String); Beide sind str Typ.

Antwort

7

Direkt vom Python Docs Tutorial genommen:

Zwei oder mehr Stringliterale nebeneinander automatisch verketteten (das heißt, die zwischen Anführungszeichen eingeschlossen sind).

>>> 'Py' 'thon' 
'Python' 

Dies funktioniert nur mit zwei Literale aber nicht mit Variablen oder Ausdrücke:

>>> prefix = 'Py' 
>>> prefix 'thon' # can't concatenate a variable and a string literal 
    ... 
SyntaxError: invalid syntax 
>>> ('un' * 3) 'ium' 
    ... 
SyntaxError: invalid syntax 

Wenn Sie Variablen oder eine Variable und eine wörtliche, Verwendung verketten möchten +:

>>> prefix + 'thon' 
'Python' 

Diese Funktion ist besonders nützlich, wenn Sie lange Ketten brechen wollen:

>>> text = ('Put several strings within parentheses ' 
...   'to have them joined together.') 
>>> text 
'Put several strings within parentheses to have them joined together.' 
1

Die Syntax my_string = "substring1" "substring2" ist eine Abkürzung für my_string = "substring1" + "substring2" (in der Regel, wenn Sie die Zeichenfolge in mehreren Zeilen, um teilen möchten um es lesbarer zu machen). Wenn Sie dies mit Variablen anstelle von Konstanten tun, müssen Sie das Verkettungssymbol verwenden.

EDIT: In Ihrer letzten Bearbeitung erwähnen Sie den Unterschied zwischen String und String Literal. True, sie sind der gleiche Datentyp. Der Unterschied ist eine Frage der Notation. Das Literal ist ein expliziter Wert (z. B. 2 ist eine Notation, die immer 2 darstellt), während eine Variable eine Bezeichnung ist, die ihren inneren Wert nicht explizit angibt (z. B. a könnte 2 oder 32 sein).

In Ihrem Fall wird "xx" immer "xx" (literal) sein, während Ihre Variable a während der Ausführung Ihres Skripts verschiedene Werte (Variable) annehmen kann.

Verwandte Themen