什么是写一个“只执行” Python模块的最佳做法?(What's the best pra

2019-10-19 04:00发布

我有一个专门用于运行一个脚本,从来没有的东西应导入一个Python模块,我想执行(和沟通)在我的代码的意图。

什么是实现这一最佳做法?


我可以想像几个选项,如包装的整个文件

if __name__ == '__main__':
    # All the code in the module

或者在启动中止

if __name__ != '__main__':
    exit()

# All the code in the module

或许有警告

if __name__ != '__main__':
    print('You should not import this')
    exit()

# All the code in the module

甚至断言

assert __name__ == '__main__', 'You should not import this'

但我不知道它(如果有的话)是合适的,在风格上还是技术上。

Answer 1:

虽然你的确可以做到

if __name__ != '__main__':
    raise ImportError(...)
    # or maybe just emit a warning

它可以站在你的脚的一天。

至少,你应该保持功能,类和其他定义的本身 - 他们没有做任何伤害,也许你或其他人以后需要它们。

如果导入刚刚公开的函数和类和值,而不做输出或其他东西的模块,你失去的是几毫秒。

相反,你应该把它执行在启动时进入功能(代码main()和执行通常的方式。



文章来源: What's the best practice for writing an “execute only” Python module?