1、背景
??平常寫在VSCode寫python程序并不關(guān)心每行的字符個數(shù)限制或者允許長度。而且對于過長代碼,VSCode也能通過格式化工具較好地調(diào)整代碼格式。現(xiàn)有如下代碼,發(fā)現(xiàn)格式化后的結(jié)果并不理想。
g_location_xy, g_location_wh = [0, 0], [0, 0]
if __name__ == "__main__":
print(g_location_xy[0] + g_location_xy[1] + g_location_wh[0] + g_location_wh[1])
格式化結(jié)果:
2、解決方法
??Python編碼風(fēng)格指導(dǎo)(PEP8)要求每行代碼不得超過80個字符。而VSCode+Pyhon常用代碼檢查工具是pylint和flake8,常用代碼格式化工具是yapf、autopep8和black。
??針對代碼過長導(dǎo)致格式化時自動換行,應(yīng)在setting.json中修改格式化工具的每行最大字符個數(shù)。
setting.json:
// yapf
"python.formatting.provider": "yapf",
"python.formatting.yapfArgs": [
"--style",
"{column_limit: 200}"
],
// autopep8
"python.formatting.provider": "autopep8",
"python.formatting.autopep8Args": [
"--max-line-length=200"
],
// black
"python.formatting.provider": "black",
"python.formatting.blackArgs": [
"--line-length",
"200"
],
??當(dāng)某行代碼大于79個字符,代碼檢查工具flake8會報錯,同樣應(yīng)在setting.json中修改其每行最大字符個數(shù)。pylint不會報錯,故不用修改。
flake8報錯:
setting.json:
// pylint
"python.linting.pylintEnabled": true,
// flake8
"python.linting.flake8Enabled": true,
"python.linting.flake8Args": [
"--max-line-length=200"
],
正確格式化結(jié)果: