【问题标题】:How to stop autopep from indenting line after backslash?如何在反斜杠后阻止 autopep 缩进行?
【发布时间】:2021-03-23 20:12:51
【问题描述】:

autopep8 转换此代码

sum_of_two_numbers = first \
                     + second

到这里

sum_of_two_numbers = first \
    + second

这是一个错误吗?如果是这样,它是 pycodestyle 或 autopep8 中的错误吗?有没有我可以忽略的错误代码来防止这种行为?如果我忽略 E127 和 E128,它也会停止缩进所有其他情况。

我知道如果我使用括号而不是反斜杠,它会正常工作,但是,有一个现有的存储库在某些地方使用反斜杠,我不想更改。


UPD。添加来自 pep8 (https://www.python.org/dev/peps/pep-0008/#maximum-line-length) 的另一个示例

反斜杠有时可能仍然合适。例如,长, 多个 with 语句不能使用隐式延续,所以 反斜杠是可以接受的:

with open('/path/to/some/file/you/want/to/read') as file_1, \
     open('/path/to/some/file/being/written', 'w') as file_2:
    file_2.write(file_1.read()) ```

autopep8 也无法正确对齐此示例。

【问题讨论】:

  • “现有的存储库在某些地方使用了反斜杠,我不想更改。” 那么为什么要在它上面运行 autopep8 呢?要么您确实想要更改它以使其符合 PEP 8,要么您不想。

标签: python autopep8 pycodestyle


【解决方案1】:

据我所知,如果不禁用其他自动缩进,就无法仅禁用此功能。如果您正在运行 autopep8,这意味着您正在尝试遵循 pep8 准则,那么在示例的情况下,您确实应该使用隐含的延续(没有反斜杠,前一行的“+”,4 个空格缩进。)如果您正在使用autopep8 在一个项目上你必须愿意让 autopep8 为你格式化项目。我不确定反斜杠的附件是什么,但这可能不是格式化你正在做的最好的方式。

【讨论】:

  • 感谢您的回答!请参阅 PEP 网站上的另一个示例。 PEP 还鼓励在下一行使用 +- 并且不禁止使用反斜杠进行续行,尽管我同意它不太常见。
  • 你是对的 +-,我在想几年前的一个老 flake8 警告,直到今天我仍然把这些搞混了。从您添加到帖子中的示例上方:“包装长行的首选方法是在括号、方括号和大括号内使用 Python 的隐含行延续。通过将表达式包装在括号中,可以将长行分隔为多行。这些应该是优先使用反斜杠来续行。"
猜你喜欢
  • 1970-01-01
  • 2020-05-30
  • 2011-08-19
  • 2021-12-31
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多