PEP8 和使用长关键字参数的对象初始化

Kyl*_*and 5 python pep8 argparse

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

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

parser = argparse.ArgumentParser(prog='PROG',
                                 ....
                                 formatter_class=argparse.RawDescriptionHelpFormatter)
Run Code Online (Sandbox Code Playgroud)

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

以下是文档中示例的argparse外观(剧透:这实际上是正确的;请参阅下面的评论):

parser = argparse.ArgumentParser(
    prog='PROG',
    formatter_class=argparse.RawDescriptionHelpFormatter,
    ....
Run Code Online (Sandbox Code Playgroud)

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

这是另一种可能性:

parser = argparse.ArgumentParser(
    prog='PROG',
    formatter_class=
    argparse.RawDescriptionHelpFormatter,
    ....
Run Code Online (Sandbox Code Playgroud)

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

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

因此,据我所知,唯一剩下的选择是要么使命名空间变得混乱:

from argparse import RawDescriptionHelpFormatter, ArgumentParser
Run Code Online (Sandbox Code Playgroud)

...或者使用一个愚蠢的临时变量(这也会使命名空间变得混乱):

rawformatter = argparse.RawDescriptionHelpFormatter
parser = argparse.ArgumentParser(prog='PROG',
                                 ....
                                 formatter_class=rawformatter)
Run Code Online (Sandbox Code Playgroud)

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

Tom*_*ton 3

你的第二个例子对我来说看起来不错,并且似乎与“#悬挂缩进应该添加一个级别”相匹配。示例如下: http: //legacy.python.org/dev/peps/pep-0008/#indentation

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