如果你在Python中使用一个符合PEP8标准的代码检查器,如flake8,当一行超过80个字符时,你会得到以下错误。E501 line too long
我将向你展示如何将一个超过80个字符的长字符串,如URL,分成多行代码。
- 忽略带反斜线的换行符( )。
- 换行符可以自由地用圆括号括起来
如果你想通过包裹或省略长字符串来输出和显示长字符串,textwrap模块也很有用。
如果你的方法链长于一行字符,而不是一个长字符串,你也可以在代码中断开这一行。
忽略带反斜线的换行符( )。
在Python中,反斜杠(\)是一个延续字符,当放在一行的末尾时,它忽略了随后的换行,并假定该行是延续的。
n = 1 + 2 \
+ 3
print(n)
# 6
另外,当连续写下多个字符串字面时,它们会被串联起来形成一个字符串,如下图所示。
s = 'aaa' 'bbb'
print(s)
# aaabbb
将两者结合起来,一个长字符串可以用多行代码编写,如下图所示。
s = 'https://wikipedia.org/wiki/'\
'%E3%83%97%E3%83%AD%E3%82%B0%E3%83'\
'%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E'
print(s)
# https://wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E
请注意,只有字符串字头(用'或””括起来)可以被连接,包含字符串的变量会导致错误。
s_var = 'xxx'
# s = 'aaa' s_var 'bbb'
# SyntaxError: invalid syntax
要将变量相互连接或将变量连接到字符串字面,请使用+运算符。
s = 'aaa' + s_var + 'bbb'
print(s)
# aaaxxxbbb
即使是用反斜杠(\)分隔,也需要+运算符来连接变量。
s = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'\
+ s_var\
+ 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'
print(s)
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
换行符可以自由地用圆括号括起来
在Python中,你可以在下面的括号内自由地断行。你可以用这一规则将长串的文本括在括号中。
()
{}
[]
请注意,下面的括号是有意义的。
{} = set
[] = list
因此,当在多行上写一个长字符串时,要使用圆括号()。
同样,利用多个字符串可以串联在一起形成一个字符串的事实,我们可以写出以下内容。
s = ('https://wikipedia.org/wiki/'
'%E3%83%97%E3%83%AD%E3%82%B0%E3%83'
'%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E')
print(s)
# https://wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E
与反斜杠的例子一样,在包含变量时需要+运算符。
s = ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
+ s_var
+ 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb')
print(s)
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb