我知道在超过 1 行的字符串分配中,您可以使用反斜杠、括号或三引号。有什么实际区别吗?哪个被认为是更好的编码实践?
例如:
STR1 = """Peanut
butter
jam"""
STR2 = "Peanut" \
"butter" \
"jam"
STR3 = ("Peanut"
"butter"
"jam")
所有这些都运行得很好,但哪一个更不容易出现未来的错误,或者是更好的做法?
我知道在超过 1 行的字符串分配中,您可以使用反斜杠、括号或三引号。有什么实际区别吗?哪个被认为是更好的编码实践?
例如:
STR1 = """Peanut
butter
jam"""
STR2 = "Peanut" \
"butter" \
"jam"
STR3 = ("Peanut"
"butter"
"jam")
所有这些都运行得很好,但哪一个更不容易出现未来的错误,或者是更好的做法?
STR1正如snatchysquid 的回答中所指出的那样,实际上是与and不同的字符串。这可能不相关,具体取决于具体情况(例如,当使用正则表达式时,您可以打开详细标志以忽略额外的空格)。STR2STR3
在STR2和之间, PEP8STR3中的指导建议后者:
包装长行的首选方法是在括号、方括号和大括号内使用 Python 的隐含行继续。通过将表达式括在括号中,可以将长行分成多行。这些应该优先使用反斜杠来继续行。
使用反斜杠,您也不能有评论:
>>> STR2 = "Peanut" \
... "butter" \ # optional
File "<stdin>", line 2
"butter" \ # optional
^
SyntaxError: unexpected character after line continuation character
>>> STR3 = ("Peanut"
... "butter" # optional
... "jam")
>>>
确实存在差异,因为使用三重引号不会打折换行\n,当按下Enter而其他不包括它们时,仅使用引号内的内容。
看看这个简单的代码打印它们中的每一个:
STR1 = """Peanut
butter
jam"""
STR2 = "Peanut" \
"butter" \
"jam"
STR3 = ("Peanut"
"butter"
"jam")
print(STR1)
print(STR2)
print(STR3)
结果如下:
Peanut
butter
jam
Peanutbutterjam
Peanutbutterjam