反斜杠和三引号之间有区别吗?

时间:2020-09-11 10:05:49

标签: python line-continuation

我知道在超过1行的字符串分配中,可以使用反斜杠,括号或三引号。有实际区别吗?哪种编码方法更好?

例如:

STR1 = """Peanut
        butter
        jam"""

STR2 = "Peanut" \
       "butter" \
       "jam"

STR3 = ("Peanut"
        "butter"
        "jam")

所有这些都运行得很好,但是哪一个更不容易出现未来的错误,或者是更好的做法呢?

2 个答案:

答案 0 :(得分:1)

正如in snatchysquid's answer所指出的,

STR1实际上是{em>与STR2STR3不同的字符串。视情况而定,这可能不相关(例如,使用正则表达式时,您可以打开the verbose flag来忽略多余的空格)。

guidance in PEP8STR2STR3之间建议后者:

包裹长行的首选方法是使用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