Python 如何正确地换行django语句以满足flake8的要求?

Python 如何正确地换行django语句以满足flake8的要求?,python,flake8,Python,Flake8,此代码从第8页获取的E501行太长(85>79个字符): qobjs &= Q( latest_visit__visitstatistics__worst_zscore__gte=worst_zscore_min_filter) 此代码在关键字/参数等于时获得E251意外空格: qobjs &= Q( latest_visit__visitstatistics__worst_zscore__gte= worst_zscore_min_filter) 满

此代码从第8页获取的
E501行太长(85>79个字符)

qobjs &= Q(
    latest_visit__visitstatistics__worst_zscore__gte=worst_zscore_min_filter)
此代码在关键字/参数等于时获得E251意外空格:

qobjs &= Q(
    latest_visit__visitstatistics__worst_zscore__gte=
    worst_zscore_min_filter)
满足第八条的正确方法是什么


编辑:我最后告诉flake8忽略noqa。我认为它不起作用,但我必须更加小心。

假设你不能选择更合理的变量名,因为它们是机器生成的,我不会担心,只要告诉
pep8
(或者
pycodestyle
,或者任何
flake8
实际用于检查PEP-8一致性的东西)忽略这行:

qobjs &= Q(...)  # noqa
(更新:与完全忽略行不同,
#noqa:E501
允许您忽略行长度,但仍会检查其他问题。)

如果您仍然使用默认的最大行宽度为79,请考虑使用更长的时间。PEP-8实际上只要求标准库中代码的宽度,并且它明确指出团队可能同意更长的时间 宽度


您遇到的错误是因为
=
之后的换行符被计为空白,就好像您键入了
Q(late…gte=better…filter)
。您可以使用显式行继续:

qobjs &= Q(
    latest_visit__visitstatistics__worst_zscore__gte=\
    worst_zscore_min_filter)
或使用较短的临时名称:

x = 'latest_visit__visitstatistics__worst_zscore__gte'
y = worst_zscore_min_filter
qobjs &= Q(**{x: y})

但我更倾向于停止试图安抚那些本来就不应该被人类阅读的代码。

关于第一个建议选项,在
flake8
中,在这种情况下,
=
后面的反斜杠很可能会引起
E502。括号之间的反斜杠是多余的,而换行符会导致关键字/参数equals周围出现
E251意外空格,如您所述。因此,我会选择使用较短的临时名称。