“有”是肾盂病吗;标题“;Python脚本中的注释

“有”是肾盂病吗;标题“;Python脚本中的注释,python,coding-style,pep8,Python,Coding Style,Pep8,我向Python社区提出了一个关于Python脚本中的块注释的问题。我已经通读了PEP-8,虽然许多想法和标准对于开发干净的模块或包是有意义的,但我并没有看到太多关于短Python脚本的内容 我的意思是,假设我决定制作一个非常快速的Python可执行脚本,作为在模块中运行业务逻辑的命令行实用程序 在这个命令行实用程序中,很大一部分只是设置一个带有长docstring的argparse解析器,然后是脚本的入口点,以及一些辅助函数 我的创作风格是这样的: ######################

我向Python社区提出了一个关于Python脚本中的块注释的问题。我已经通读了PEP-8,虽然许多想法和标准对于开发干净的模块或包是有意义的,但我并没有看到太多关于短Python脚本的内容

我的意思是,假设我决定制作一个非常快速的Python可执行脚本,作为在模块中运行业务逻辑的命令行实用程序

在这个命令行实用程序中,很大一部分只是设置一个带有长docstring的argparse解析器,然后是脚本的入口点,以及一些辅助函数

我的创作风格是这样的:

############################################################
# Helper functions
############################################################

def helper1(arg):
    pass # things happen

def helper2():
    pass

...

############################################################
# Setup Argparse
############################################################

parser = argparse.ArgumentParser(description='Some description')

somedoc = """
Some long description for my first argument...
""".strip()

parser.add_argument('integers', 
    metavar='N', 
    type=int, 
    nargs='+',
    help=somedoc)

parser.add_argument('otherargs', 
    metavar='N', 
    type=int, 
    nargs='+',
    help='Some docstring')

...

############################################################
# Entry point
############################################################

if __name__ == '__main__':
    args = parser.parse_args()

    if len(args.integers) > 1:
        helper1(args.integers)

...
尽管PEP-8没有涉及到这一点,但我发现它的可读性很强(假设我的变量名更好),块注释确实有助于快速找出所有内容的位置。此外,由于这最终是一个与我的应用程序打包在一起的可执行脚本,因此将其保存在一个文件中是有意义的,因为它实际上是一个美化的参数解析器


有没有比这更像蟒蛇的方法呢?

我想大家的共识是:没有

最好将模块拆分为一个包:

- package_name
 ∟ __init__.py
 ∟ __main__.py
 ∟ args.py
 ∟ helpers.py
注意:您可能希望给“助手”一个更具描述性的名称(如您所说)

出于某些原因,这是首选的:

  • 标题注释可能会过时(将函数插入错误的部分)
  • 函数/类名更好地描述事物的功能,例如,如果它被称为
    parser
    ,并使用
    argparse
    ,则显然与参数解析有关;标题注释添加了什么??(我一定已经在读源代码了:这个标题注释没有任何价值。)
  • <> LI>当添加新的功能时,必须考虑它应该进入哪个文件,而不是将它倾倒到任何地方…
  • 将业务逻辑与参数解析分开,放在单独的文件中,这会鼓励这样做。也可以分离不同的函数族
  • 类似地,测试更容易,应该测试单独的关注点和枚举抽象
  • 你可以记录每个文件,这样任何使用你的软件包的人都可以看到它是如何构造的/它是如何工作的。。。不必通读整件事
  • 项目总是越来越大,如果保存在一个文件中,就会变得一团糟
  • 调试可能会稍微容易一些(也许我现在正在着手)
  • Python已经用包解决了这个问题(和
    \uuuu main\uuuu.py
    ),不要重新发明轮子

也就是说:

将其保存在一个文件中是有意义的,因为它实际上是一个美化的参数解析器

对于快速编写脚本并将其发布,总会有争论

如果你想要一个更易于长期维护、可读性更强的东西,而且…像蟒蛇一样。考虑把它放在目录/包中。


如果使用适当的构建工具(如)发送单个文件,可能会更好。看看这个。

你可能想看看。我也查过了。同样,在开发您想要记录的包时,这非常有意义。在逻辑上分离一个文件时,没有太多内容。从技术上讲,脚本可以分解为模块,但在本例中似乎没有必要。这将是python的方式。使用注释将结构引入项目不是一个好方法。