我有一个专门用于作为脚本运行的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'
但我不确定哪种(如果有的话)是合适的,风格上或技术上的。
答案 0 :(得分:3)
虽然你确实可以做到
if __name__ != '__main__':
raise ImportError(...)
# or maybe just emit a warning
前几天它可能会站在你的脚下。
至少,您应该单独保留功能,类和其他定义 - 它们不会造成任何伤害,也许您或其他人以后需要它们。
如果你导入一个只暴露函数,类和值而不做输出或其他事情的模块,你所丢失的只是几毫秒。
相反,您应该将启动时执行的代码放入函数(main()
?)并以通常的方式执行。