在我看来,没有简单的方法可以在 RawDescriptionHelpFormatter 模块中使用 argparse 而不违反 PEP8 或混淆您的命名空间。

这是格式化它的最明显的方法:

parser = argparse.ArgumentParser(prog='PROG',
                                 ....
                                 formatter_class=argparse.RawDescriptionHelpFormatter)

这违反了行不应超过 80 个字符的规定

以下是 argparse 文档中的示例的外观( 剧透:这实际上是正确的;请参阅 下方的评论):
parser = argparse.ArgumentParser(
    prog='PROG',
    formatter_class=argparse.RawDescriptionHelpFormatter,
    ....

这违反了关于连续行缩进的 PEP8 E128。

这是另一种可能性:
parser = argparse.ArgumentParser(
    prog='PROG',
    formatter_class=
    argparse.RawDescriptionHelpFormatter,
    ....

这违反了 PEP8 E251 关于 = 周围空格的关键参数。

(当然,这甚至没有解决我的行的字符数假设 parser 标记从第一列开始的事实,这是最好的情况;如果我们想在一个类中创建一个解析器并且/或函数?)

因此,据我所知,唯一剩下的选择是弄乱命名空间:
from argparse import RawDescriptionHelpFormatter, ArgumentParser

...或者使用一个愚蠢的临时变量(这也会使命名空间变得困惑):
rawformatter = argparse.RawDescriptionHelpFormatter
parser = argparse.ArgumentParser(prog='PROG',
                                 ....
                                 formatter_class=rawformatter)

我错过了什么吗?我想在当前命名空间中直接使用 RawDescriptionHelpFormatter 和 ArgumentParser 没什么大不了的,但这似乎是不必要的挫折。

最佳答案

您的第二个示例对我来说看起来不错,并且似乎与“# Hanging indents should add a level”相匹配。这里的例子:http://legacy.python.org/dev/peps/pep-0008/#indentation

似乎也符合这个类似的问题/答案:What is PEP8's E128: continuation line under-indented for visual indent?

关于python - PEP8 和使用长关键字参数的对象初始化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25559943/

10-12 21:46