2017-05-26 141 views
2

与Python行为混淆。 考虑这些例子:引号内的Python字符串赋值

>>>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 

我期待的结果wwxxyyxx

但是出现语法错误。

它们之间有什么区别(字符串文字和字符串);两者都是str类型。

回答

7

Python Docs Tutorial直接采取:

两个或更多个字符串(引号之间封入即那些)彼此相邻被自动地重组。

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

这只能有两个文字虽然不是变量或表达式:

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

如果你想连接变量或变量和文字,使用+

>>> prefix + 'thon' 
'Python' 

当你想打破长字符串,此功能特别有用:

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

语法my_string = "substring1" "substring2"my_string = "substring1" + "substring2"快捷方式(通常当你要分割在以多行字符串使其更具可读性)。如果你用变量而不是常量来做,你需要使用连接符号。

编辑:在你最后的编辑中,你提到了字符串和字符串之间的区别。确实,它们是相同的数据类型。区别是符号的问题。文字是明确的值(例如,2是总是代表2的符号),而变量是不明确指示其内部值的标签(例如,可以是2或32)。

在你的情况下,“xx”将始终为“xx”(文字),而在执行脚本期间,变量a可能会采用不同的值(变量)。