【发布时间】:2015-07-10 00:41:23
【问题描述】:
我将在这里使用 argparse 作为示例,但我认为它适用于很多事情。考虑:
parser = argparse.ArgumentParser(description="This is a description of how this program works.")
subparsers = parser.add_subparsers(title="subcommands")
parser_sub1 = subparsers.add_parser("sub1",
description="subcommand 1 does something something something")
parser_sub1.add_argument("arg1",
help="Arg1 does somethign something something.")
等等 20 多条丑陋的线条。
add_argument 尤其是 add_parser 行很长,主要是因为帮助/描述字符串。但我认为没有明显的方法可以干净地缩短它们。如您所见,以通常的方式在第二行缩进只会获得几个字符。将字符串拆分为多行会很快变得很尴尬。
我在通过 -m pep8 运行一些代码时遇到了这个问题,它抱怨几乎每个 add_argument 行都是 >80 个字符。根本问题似乎是到开括号的那部分行本身太长,无法在后面插入字符串,即使参数之间有断行和缩进也是如此。有几种方法可以解决这个问题:
- 排长队,忽略 pep8
- 缩进续行并忽略 pep8
- 使用非常短的变量名来保存字符(例如
ps1 = parser.add_subparsers(whatever) - 别名我可以节省更多(例如
psaa = parser_sub1.add_argument为每个块) - 制作一堆字典文字,然后用 ** 将它们解压缩到函数调用中(但我觉得使用字典文字很痛苦)
- 以不那么尴尬的格式(可能是 YAML)从外部文件中读取函数调用参数,然后解压缩(但如果不引用另一个文件,您就无法知道代码在做什么)
- ...还有什么?
是否有一种已知的有效方法来处理冗长的函数参数,这些函数参数在自然编写时会违反 80 个字符的约定?
【问题讨论】:
-
我建议把长线分开。
-
与大多数语言不同,Python 有一个权威的风格指南来解决这个问题。已提交重新开放动议。
标签: python coding-style