Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 长函数调用的代码应该如何设置样式?_Python_Coding Style - Fatal编程技术网

Python 长函数调用的代码应该如何设置样式?

Python 长函数调用的代码应该如何设置样式?,python,coding-style,Python,Coding Style,这里我将以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",

这里我将以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_参数,尤其是add_解析器行很长,这主要是因为help/description字符串。但我看不到明显的方法来彻底缩短它们。正如您所看到的,以通常的方式在第二行缩进只能获得几个字符。将字符串拆分为多行会很快变得笨拙

我在通过-m pep8运行一些代码时遇到了这个问题,它抱怨几乎每个add_参数行都大于80个字符。根本的问题似乎是,直到开括号的那部分行本身太长,无法容纳后面的字符串,即使参数之间有一个中断和缩进。有几种方法可以解决这个问题:

  • 生活在长长的队伍中,忽略pep8
  • 在“缩进”下,缩进续行并忽略pep8
  • 使用非常短的变量名保存字符(例如,
    ps1=parser.add_subparser(无论什么)
  • 别名我可以保存的更多内容(例如,为每个块添加参数psaa=parser\u sub1)
  • 制作一堆字典文本,并使用**将它们解压到函数调用中(但我发现dict文本是一个很难处理的问题)
  • 从外部文件以不太麻烦的格式(可能是YAML)读入函数调用参数,然后解包(但是如果不引用其他文件,就无法知道代码在做什么)
  • …还有别的吗

是否有一种已知的有效方法来处理长函数参数,当自然编写时,这些参数会被80个字符的约定所阻塞?

这在很大程度上是一个品味和观点的问题,但在这里,有两个

  • 很少有真正的代码坚持严格的80列建议。值得避免笨拙的长行,但狭隘地坚持源自穿孔卡片的约束是愚蠢的。PEP8也解决了这一问题:
一些团队强烈希望使用更长的行长度 独家或主要由能够就此达成协议的团队 问题,可以将标称线路长度从80增加到100 字符(有效地将最大长度增加到99 (字符)

  • 对于这样的事情,制作一些数据结构,主要是通过文字来表达,然后通过配置到**或用循环的方式来调用配置调用可能是最安全的。它使所有的文本可读,内联,在一个地方,因此很容易编辑。您应该能够在代码THA的中间出现一个BLB。t看起来有点像文档字符串

很多人坚持使用80、100或120个字符的列。我们的团队设置了100个字符的硬限制,因为否则在我们的任何笔记本电脑屏幕上编写代码都会变得非常困难。起初我也很怀疑,但这对我来说是硬字符限制的一个非常有效的理由。@Anubianob限制对可读性都很有用为了能够同时提供两个窗口/帧的代码。但是,在80上挂起电话是没有意义的。事实上,讨论中的政治公众人物几乎是这么说的。我已经用引号更新了答案。哦,是的,当然,为了那个数字而挂起电话是没有意义的。但是有一个严格的限制是很好的根据您团队的首选项进行修改,并考虑任何新的团队成员。我建议拆分长行。与大多数语言不同,Python有一个权威的样式指南来说明此问题。重新打开的动议已提交。
x = ('string literal broken across two lines '
...  'but it works because the parens keeps them together.')
>>> x
'string literal broken across two lines but it works because the parens keeps them together.'

>>> print('If this was already in the parens of an argument list '
...       'you are already in a context where string literal '
...       'concatenation works.')
If this was already in the parens of an argument list you are already in a context where string literal concatenation works.