在我看来,没有简单的方法可以在 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/