我应该在简单的Python脚本中使用main()方法吗?

22 浏览
0 Comments

我应该在简单的Python脚本中使用main()方法吗?

我有很多简单的脚本,用于计算一些内容。它们仅由一个模块组成。

我应该为它们编写主方法并使用if __name__构造来调用它们,还是直接把它们全部倒入到一个模块中?

每种方法都有哪些优势?

admin 更改状态以发布 2023年5月22日
0
0 Comments

如果您这样做:

# your code

那么 import your_module 将执行您的代码。相反,如果这样做:

if __name__ == '__main__':
    # your code

导入不会运行代码,但针对该文件的解释器会运行代码。

如果脚本只能通过手动打开解释器来运行,那么没有任何区别。

当您有一个库时(或者重复使用脚本中的定义),这一点变得重要。

  1. 在定义之外或没有 if __name__ 保护的库中添加代码时,导入时运行代码,让您初始化库需要的一些东西。

  2. 也许您希望您的库也具有一些可运行的功能。也许是测试,或者类似于 Python 的 SimpleHTTPServer(它提供一些类,但是您也可以运行模块并启动服务器)。您可以使用 if __name__ 语句拥有双重行为。

  3. epydoc 这样的工具导入模块以访问 docstrings,因此当您仅想生成 HTML 文档时运行代码不是真正的意图。

0
0 Comments

我总是编写一个适当命名的main()函数,并在if__name__ == '__main__' 块中仅编写命令行解析和对main()的调用。这是因为无论我最初期望该脚本有多么愚蠢,微不足道或专用,我总是想在以后的某个时候从另一个模块调用它。

或者我今天花时间使它成为可导入的模块,或者在几个月后想要将其重用于其他事物时,花费额外的时间重构它。

总是。

每次。

我停止了挣扎,并开始从一开始就写入我的代码。

0