字符串连接的变体?
Variants of string concatenation?
在字符串文字连接的以下两个变体(之间有或没有加号)中:
- 首选方式是什么?
- 有什么区别?
- 什么时候应该使用其中之一?
- 是否应该使用它们中的任何一个,如果是,为什么?
-
join
是首选吗?
代码:
>>> # 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
则不会。
如果您只连接几个元素,我想 +
更好,因为它更具可读性。
在字符串文字连接的以下两个变体(之间有或没有加号)中:
- 首选方式是什么?
- 有什么区别?
- 什么时候应该使用其中之一?
- 是否应该使用它们中的任何一个,如果是,为什么?
-
join
是首选吗?
代码:
>>> # 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
则不会。
如果您只连接几个元素,我想 +
更好,因为它更具可读性。