【问题标题】:proper way to handle max line length python处理最大行长度python的正确方法
【发布时间】:2023-02-24 23:22:24
【问题描述】:

阙-1打破 flake8 和黑色循环

class TaskInfo(StrEnum):
   
   ABCDEFG_HELLOO_TASK_WELCOMEE_VALUE: str = "abcdefg_helloo_task_welcomee_value"

来自 Flake8 的消息给出的行太长(82 > 79 个字符)

所以我编辑如下

class TaskInfo(StrEnum):
   
   ABCDEFG_HELLOO_TASK_WELCOMEE_VALUE: str = ("abcdefg_helloo_task" +
                                              "_welcomee_value")

现在我收到消息,因为 Black 会做出更改。在运行黑色时,它将字符串重新格式化为原始状态。

阙-2设计网页

由于上面的问题与脚本代码有关,我也在设计使用 dash plotly 的网络仪表板, 这里有彼此内部的行和列(引导方式),它们包含不同的组件,如按钮等 这使得一行最多 150 个字符。

处理 Que-1 和 Que-2 的正确方法是什么?

【问题讨论】:

  • 您应该提出两个单独的问题,而不是将它们合并在一个问题中。特别是因为他们似乎不是很相关
  • PEP-8 断言最大行长度为 79,但随后在几段之后自行反转以允许您使用您的团队同意可接受的任何最大行长度。它实际上只是关于要添加到 Python 标准库的代码行长度的规定。黑色是一种更具规范性的工具,但即使是它也可以让您选择“正确”的行长来强制执行。
  • 请注意,您不需要在 str 定义中使用 + 符号,因为 Python 会自动将字符串文字串联在一起。虽然它不会造成任何伤害(+ 操作是在编译时执行的)

标签: python


【解决方案1】:

这两种工具都是可配置的。 flake8 有一个 --max-line-length 选项来指示哪些行应该被标记为太长,black 有一个 --line-length 选项来指示应该强制执行什么长度。

PEP-8 本身有点矛盾:它的“最大行长度”部分的第一行直言不讳地断言

将所有行限制为最多 79 个字符。

但后来承认了几段

一些团队非常喜欢更长的线路长度。对于专门或主要由可以就此问题达成一致的团队维护的代码,可以将标称行长度从 80 个字符增加到 100 个字符(有效地将最大长度增加到 99 个字符),前提是 cmets 和文档字符串仍然被包装72 个字符。

因此,除非您向 Python 标准库贡献代码,否则正确的答案是选择您(和您的团队)认为适合您的代码的行长度,然后配置两个都遵守该行长度的工具。

【讨论】:

    【解决方案2】:

    可以在大于79个字符的行前面加上# noqa,让flake8忽略这个错误。

    例子:

    class TaskInfo(StrEnum):
       
       ABCDEFG_HELLOO_TASK_WELCOMEE_VALUE: str = "abcdefg_helloo_task_welcomee_value" # noqa
    

    【讨论】:

      猜你喜欢
      • 2014-04-14
      • 1970-01-01
      • 2010-12-02
      • 1970-01-01
      • 2010-09-30
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多