字符串连接的变体?

Variants of string concatenation?

在字符串文字连接的以下两个变体(之间有或没有加号)中:

代码:

>>> # variant 1. Plus
>>> 'A'+'B'
'AB'
>>> # variant 2. Just a blank space
>>> 'A' 'B'
'AB'
>>> # They seems to be both equal
>>> 'A'+'B' == 'A' 'B'
True

并置仅适用于字符串文字:

>>> 'A' 'B'
'AB'

如果您使用字符串对象:

>>> a = 'A'
>>> b = 'B'

您需要使用不同的方法:

>>> a b
    a b
      ^
SyntaxError: invalid syntax

>>> a + b
'AB'

+ 比将文字并排放置更明显。

第一种方法的一个用途是将长文本分成几行,保持 源代码中的缩进:

>>> a = 5
>>> if a == 5:
    text = ('This is a long string'
            ' that I can continue on the next line.')
>>> text
'This is a long string that I can continue on the next line.'

''join() 是连接更多字符串的首选方式,例如在列表中:

>>> ''.join(['A', 'B', 'C', 'D'])
'ABCD'

没有+的变体是在代码的语法解析过程中完成的。我想这样做是为了让你在代码中更好地编写多行字符串,所以你可以这样做:

test = "This is a line that is " \
       "too long to fit nicely on the screen."

我想如果可能的话,你应该使用 non-+ 版本,因为在字节码中只有结果字符串,没有连接符号。

当你使用 + 时,你的代码中有两个字符串,你在运行时执行连接(除非解释器很聪明并优化它,但我不知道他们是否这样做)。

显然,你不能这样做: 一个 = 'A' ba = 'B' a

哪个更快? no-+ 版本,因为它甚至在执行脚本之前就已完成。

+ vs join -> 如果你有很多元素,join 是首选,因为它经过优化可以处理很多元素。使用 + 连接多个字符串会在进程内存中创建大量部分结果,而使用 join 则不会。

如果您只连接几个元素,我想 + 更好,因为它更具可读性。