27

PEP8 信息:

models.py:10:80: E501 line too long (83 > 79 characters)

模型.py:

field = TreeForeignKey('self', null=True, blank=True, related_name='abcdefgh')

如何正确写出这一行?

4

6 回答 6

29

这是“正确的”,PEP8 只是标记超过 79 个字符的行。但如果你担心这个,你可以这样写:

field = TreeForeignKey('self',
                       null=True,
                       blank=True,
                       related_name='abcdefgh')

或这个:

field = TreeForeignKey(
    'self',
    null=True,
    blank=True,
    related_name='abcdefgh',
)

或者,真的,任何其他可以将单行分成多个较短行的样式。

于 2013-01-03T16:53:12.660 回答
18

我刚刚发现了一个名为 autopep8 的简洁程序!https://github.com/hhatto/autopep8

pip install autopep8
autopep8 -i models.py

您还可以(递归地)执行以下操作:

autopep8 -ri package/

Auto PEP8 仅对文件进行安全更改,仅更改布局,而不更改代码逻辑。

于 2013-01-03T17:09:54.690 回答
8

如果你有一些不方便分解的可笑的长字符串(想想 Sentry DSN、MIDDLEWARE 或 INSTALLED_APPS 中的偶尔模块),你可以把它放在# noqa行尾,而 linter 会忽略线。谨慎使用,绝对不要用于您要求的情况。

于 2015-10-02T14:13:11.410 回答
5

这是非常主观的。如果我严格遵循 E501,我会写:

field = TreeForeignKey('self',
                       null=True,
                       blank=True,
                       related_name='abcdefgh')

我通常认为 100 太长,而不是 80。

于 2013-01-03T16:52:15.377 回答
0

我通常将其拆分以将参数排列成比原始行更深的缩进级别,例如:

field = TreeForeignKey('self', null=True,
    blank=True, related_name='abcdefgh')

特别是如果TreeForeignKey是类似的东西TreeForeignKeyWithReferencesToSomethingElse,在这种情况下,如果您将所有参数与左括号对齐,所有参数将从窗口的最右侧开始。如果任何参数的名称很长,例如defaultvalueforcertaincircumstances,您可能无法将整个内容放入 80 列以下:

field = TreeForeignKeyWithReferencesToSomethingElse('self',
                                                    defaultvalueforcertaincircumstances='foo')

我也更喜欢将多个函数参数放在同一行(除非它看起来不正确;我不是纯粹主义者!)这样垂直空间不会过度扩展,导致我花更多时间滚动我的编辑器比其他必要的。

于 2013-01-03T17:19:26.377 回答
0

autopep8也可以解决文件和整个项目中的间距问题,这里是文档的链接:https ://github.com/hhatto/autopep8

  1. pip install --upgrade autopep8
  2. autopep8 --in-place --aggressive --aggressive <path_with_python_filename>
    前任:autopep8 --in-place --aggressive --aggressive C://a/test.py
于 2020-04-17T11:00:10.347 回答