0

我知道在超过 1 行的字符串分配中,您可以使用反斜杠、括号或三引号。有什么实际区别吗?哪个被认为是更好的编码实践?

例如:

STR1 = """Peanut
        butter
        jam"""

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

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

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

4

2 回答 2

1

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")
>>> 
于 2020-09-11T10:16:06.323 回答
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
于 2020-09-11T10:06:43.933 回答