# works
print 4 + \
2
# doesn't work
print 4 + \
2
区别在哪里? 区别是看不见的——第二种情况后面有一个空格字符。糟糕!
应该怎么做呢? 好吧,用括号括起来。
print (4 +
2)
不需要反斜杠。这实际上是通用的,你永远不需要使用反斜杠。即使是属性访问边界也不需要!
print (foo
.bar())
对于字符串,您可以显式地添加它们,也可以使用 C 风格的连接隐式添加。
# all of these do exactly the same thing
print ("123"
"456")
print ("123" +
"456")
print "123456"
最后,任何形式的括号((),[],{}等)都可以在任何位置换行。因此,例如,您可以使用多行列表文字,只要元素由逗号分隔即可。
Python的官方文档中可以找到更多信息。另外,一个快速提示,PEP-8指定79个字符为限制,而不是80个--如果您有80个字符,那么您已经超过了限制。
(very_long_var_name = … <newline> …)
),也不能在像(with open('very long file name') <newline> as …):
这样的语句中使用。实际上,它们只能用于表达式(而不是语句)中,即那些被"计算"并返回值的东西。 - Eric O. Lebigotfunction(arg, arg, arg, arg,
arg, arg, arg...)
如果超过80个字符的代码是一行不自然可分割的代码,你可以使用反斜杠\
来“转义”换行符。
some.weird.namespace.thing.that.is.long = ','.join(strings) + \
'another string'
你还可以利用括号来帮助你。
some.weird.namespace.thing.that.is.long = (','.join(strings) +
'another string')
所有类型的集合括号 {}(字典/集合)、[](列表)、()(元组)都可以跨多行进行分隔,没有问题。这样可以实现更好的格式化。
mydict = {
'key': 'value',
'yes': 'no'
}
thing = some.weird.namespace.thing.that
,
thing.long = ','.join(strings) + 'another string'
- guyskk我对之前的回答有两点补充:
字符串可以自动拼接,这非常方便:
this_is_a_long_string = ("lkjlkj lkj lkj mlkj mlkj mlkj mlkj mlkj mlkj "
"rest of the string: no string addition is necessary!"
" You can do it many times!")
注意这是高效的:这并不会导致代码运行时计算字符串连接操作:相反,这将被视为一个单一的长字符串文字,因此它是高效的。
Devin的答案有一个小陷阱:"括号"语法实际上并不是"通用的"。例如,d[42] = "H22G" 不能写成
(d
[42] = "H2G2")
可以在“计算”表达式(不包括像上面那样的赋值(=))周围使用括号。
另一个例子是以下代码,它曾经会在Python 3.9之前某个时间点生成语法错误:
with (open("..... very long file name .....")
as input_file):
实际上,括号不能放在任何语句周围,更普遍地说,只能放在表达式周围。
在这些情况下,可以使用“”语法,或者更好的方法(如果可能的话应避免“”),将代码拆分成多个语句。
Python惯用法指出:
最后才考虑使用反斜杠
如果有可能,尽量避免使用反斜杠。例如,如果你有一个类似于 a.train.wreck.that.spans.across.a.dozen.cars.and-multiple.lines.across.the.whole.trainyard.and.several.states()
的代码块,则可这样做:
lines = a.train.wreck.that.spans.across.a.dozen.cars.and-multiple.lines
lines.across.the.whole.trainyard.and.several.states()
或者更好的方法是重构你的代码。拜托了。
print("""...文本...""")
或 print("文本" "文本" "文本")
。 - Kimvaisprint(f'{text:-^80}')
或者 print('{:-^80}'.format(text))
。 - guyskk