如何正确地换行django语句来满足flake8?

时间:2018-04-22 13:51:53

标签: python flake8

此代码从flake8获取E501 line too long (85 > 79 characters)

qobjs &= Q(
    latest_visit__visitstatistics__worst_zscore__gte=worst_zscore_min_filter)

此代码获取E251 unexpected spaces around keyword / parameter equals

qobjs &= Q(
    latest_visit__visitstatistics__worst_zscore__gte=
    worst_zscore_min_filter)

满足flake8的正确方法是什么?

编辑:我最终告诉flake8忽略了noqa。我认为它没有用,但我只需要read the docs更加谨慎。

1 个答案:

答案 0 :(得分:2)

假设您无法选择更加理智的变量名称,因为这些是机器生成的,我不会担心它,只需告诉pep8(或pycodestyle,或其他{ {1}}实际上用于检查PEP-8一致性)忽略该行:

flake8

(更新:而不是完全忽略该行,qobjs &= Q(...) # noqa 会让您忽略行长度,但仍会检查其他问题。)

如果您仍然使用默认的最大线宽79,请考虑使用更长的时间。 PEP-8实际上只需要标准库中代码的宽度,并明确指出团队可能会更长时间达成一致 宽度。

您获得的错误是因为# noqa: E501之后的换行符被计为空格,就像您键入了=一样。您可以使用显式行继续:

Q(late...gte= worse...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}) 安抚在一开始就不应该是人类可读的代码上。