我有点痴迷用flake8格式化我的python代码。但是,我找不到在Django的设置文件中解决E501(行太长x> 79个字符)的好方法。
首先它是这样的(4xE501):
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
然后我想出了这个:
AUTH_PASSWORD_VALIDATORS = [{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
}, {
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
}, {
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
}, {
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
但仍然'NAME':django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
太长。有没有办法格式化这个或者我应该忽略这个?
如果你痴迷于没有得到这个警告而不是你的代码的实际外观,那么你可以通过在断点处添加一个\
字符来打破一行python代码(不破坏它的连续性):
例子:
# 1
from some_module import some_method, some_other_method, \
a_third_method
# 2
s = "A really very long string, which exist to mesh with your pep8" \
" warning free obsession. Well, not anymore!!!"
注意:当你要拆分的行在\
内时,{}, [] or ()
字符会引发错误,所以你可以这样做:
AUTH_PASSWORD_VALIDATORS = [{
'NAME': 'django.contrib.auth.password_validation.'
'UserAttributeSimilarityValidator'
}, ...
考虑到......这不是那么难看
如果你不想要警告并且你喜欢你的代码,那么你可以添加:
# nopep8
在你想要免除pep8分析的每一行的末尾。
看着Coding style | Django docs发现了这个:
PEP 8的一个例外是我们对线路长度的规定。如果代码看起来非常丑陋或难以阅读,请不要将代码行限制为79个字符。我们允许最多119个字符,因为这是GitHub代码审查的宽度。
即使Django的人也避免它(他们也喜欢使用flake8进行PEP8检查)。所以,如果你制作一个.flake8
或setup.cfg
文件并输入以下内容会更好:
[flake8]
max-line-length = 119
作为替代方案(以下重写通过PEP8):
[{"NAME": f"django.contrib.auth.password_validation.{name}"}
for name in [
"UserAttributeSimilarityValidator",
"MinimumLengthValidator",
"CommonPasswordValidator",
"NumericPasswordValidator"]]
在python 2中,您可以使用{}".format(name)
而不是f""
。