线太长了。 Django PEP8

时间:2013-01-03 16:46:21

标签: python django pep8

PEP8信息:

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

Models.py:

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

如何正确写这条线?

6 个答案:

答案 0 :(得分:27)

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

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

或者这个:

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

或者,实际上,任何其他样式都会将单行划分为多个较短的行。

答案 1 :(得分:13)

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

pip install autopep8
autopep8 -i models.py

你也可以(递归地):

autopep8 -ri package/

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

答案 2 :(得分:5)

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

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

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

答案 3 :(得分:4)

如果你有一些荒谬的长字符串,不太容易分成碎片(考虑像Sentry DSNs,MIDDLEWARE中的​​临时模块或INSTALLED_APPS这样的东西),你可以把# noqa放在最后。线和短线将忽略线。请谨慎使用,绝对不要用于你要求的情况。

答案 4 :(得分:0)

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

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

特别是如果TreeForeignKey类似于TreeForeignKeyWithReferencesToSomethingElse,在这种情况下,如果您使用左括号将所有参数排列在窗口的最右侧,则所有参数都将从窗口的最右侧开始。如果任何参数的长名称如defaultvalueforcertaincircumstances,您可能无法将所有参数放在80列以下:

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

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

答案 5 :(得分: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