如果在 Python 中使用 flake8 等 PEP8 兼容的代碼檢查器,當一行超過 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