我知道在超过1行的字符串分配中,可以使用反斜杠,括号或三引号。有实际区别吗?哪种编码方法更好?
例如:
STR1 = """Peanut
butter
jam"""
STR2 = "Peanut" \
"butter" \
"jam"
STR3 = ("Peanut"
"butter"
"jam")
所有这些都运行得很好,但是哪一个更不容易出现未来的错误,或者是更好的做法呢?
答案 0 :(得分:1)
STR1
实际上是{em>与STR2
和STR3
不同的字符串。视情况而定,这可能不相关(例如,使用正则表达式时,您可以打开the verbose flag来忽略多余的空格)。
guidance in PEP8在STR2
和STR3
之间建议后者:
包裹长行的首选方法是使用Python隐含的 括号,方括号和大括号内的行连续。排长龙 可以通过将表达式包装在 括弧。应该优先使用这些而不是使用反斜杠 行继续。
使用反斜杠,您也无法发表评论:
>>> STR2 = "Peanut" \
... "butter" \ # optional
File "<stdin>", line 2
"butter" \ # optional
^
SyntaxError: unexpected character after line continuation character
>>> STR3 = ("Peanut"
... "butter" # optional
... "jam")
>>>
答案 1 :(得分:0)
确实存在差异,因为使用三引号不会打折\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