如何正确地换行 django 语句以满足 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。 我认为它不起作用,但我只需要更仔细地阅读文档。

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

qobjs &= Q(...)  # noqa

(更新:与其完全忽略该行,# noqa: E501会让您忽略该行长度,但仍会检查其他问题。

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


您遇到的错误是因为=后面的换行符被计为空格,就好像您键入了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})

但我的偏好是停止试图安抚flake8那些一开始就不应该是人类可读的代码。

最新更新