首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python脚本中有“头”注释是Pythonic的吗?

Python脚本中有“头”注释是Pythonic的吗?
EN

Stack Overflow用户
提问于 2015-12-14 04:46:53
回答 1查看 5.3K关注 0票数 8

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

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

在这个命令行实用程序中,很大一部分只是一个具有长文档字符串的a解析器的设置,后面是脚本的一个入口点,沿途有几个助手函数。

我的创作风格是这样的:

代码语言:javascript
复制
############################################################
# 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没有涵盖这一点,但我发现这往往是相当可读的(假设我的变量名要好得多),而且块注释确实有助于快速确定所有内容的位置。而且,由于这最终是与我的应用程序一起打包的可执行脚本,所以将其保存在一个文件中是有意义的,因为它实际上是一个美化的参数解析器。

有没有更多的毕达通的方法来解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2015-12-16 00:11:23

我想大家的共识是:不。

将模块分成一个包要好得多:

代码语言:javascript
复制
- package_name
 ∟ __init__.py
 ∟ __main__.py
 ∟ args.py
 ∟ helpers.py

注意:你可能想给“帮手”一个描述性更强的名字(就像你说的)。

有些理由更倾向于这样做:

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

尽管如此:

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

总是会有一个论点,要求迅速写剧本,然后把它放在门外。

如果您想要长期的、可读的和...pythonic更易于维护的东西。考虑将其放在目录/包中。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34259939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档