行太长。 Django PEP8

问题描述 投票:21回答:6

PEP8信息:

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

Models.py:

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

如何正确编写此行?

python django pep8
6个回答
28
投票

这是“正确的”,PEP8仅标记了超过79个字符的行。但是,如果您对此有所担心,可以这样写:

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

或此:

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

或者,实际上,任何其他将单行分成多行短的样式。


15
投票

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

pip install autopep8
autopep8 -i models.py

您也可以(递归):

autopep8 -ri package/

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


5
投票

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

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

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


5
投票

如果您有一些荒谬的长字符串,将其分解成段不太方便(例如,考虑Sentry DSN,MIDDLEWARE或INSTALLED_APPS中的偶然模块之类的东西),您可以将# noqa放在行的末尾,然后短绒棉将忽略这条线。谨慎使用,绝对不要用于您所要求的情况。


0
投票

我通常将其拆分以使参数比原始行深一层缩进,例如:

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

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

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

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


0
投票

我建议使用免费的PyCharm Community Edition

© www.soinside.com 2019 - 2024. All rights reserved.