这是一个开始。在使用它们的代码之外定义更长的字符串不是一个坏习惯。这是一种分离数据和行为的方法。您的第一个选项是通过将字符串字面量彼此相邻来隐式地连接在一起:
("This is the first line of my text, "
"which will be joined to a second.")
或者用行结束连续,这是一个更脆弱,因为这是工作:
"This is the first line of my text, " \
"which will be joined to a second."
但这不:
"This is the first line of my text, " \
"which will be joined to a second."
看到不同?没有?你会不会,当它是你的代码。
隐式连接的缺点是,它只适用于字符串字面量,而不是字符串
变量,所以事情可以得到一点多毛,当你重构。此外,您只能对组合字符串作为整体插入格式。
或者,您可以使用concatenation运算符()显式地连接:
("This is the first line of my text, " +
"which will be joined to a second.")
显式比隐式更好,如同python的zen所说,但是这创建了三个字符串而不是一个字符串,并且使用了两倍的内存:有两个你写的,加上一个,它们两个连接在一起,所以你必须知道什么时候忽略禅。上面是你可以应用格式化
每行上的任何子字符串,或从圆括号外部的整个批次。
最后,可以使用三引号字符串:
"""This is the first line of my text
which will be joined to a second."""
这通常是我最喜欢的,虽然它的行为略有不同,因为换行符和后续行上的任何前导空白将显示在最后一个字符串中。您可以使用转义的反斜杠消除换行符。
"""This is the first line of my text \
which will be joined to a second."""
这与上述相同的技术具有相同的问题,因为正确的代码仅通过不可见的空格与不正确的代码不同。
哪一个是“最好的”取决于你的具体情况,但答案不是简单的美学,而是一个微妙的不同的行为。