我有几个cli python脚本,它们不是要导入的目标。 所以,我把这个代码放在首位:
if __name__!='__main__':
import sys
sys.exit(0)
这是一种不好的做法还是一种好的做法? 主要目标是防止将所有代码放入函数并放在底部
if __name__=='__main__':
mybig_main_run()
答案 0 :(得分:2)
我认为这是一种不好的做法。
没有理由这样做。
它打破了交互式控制台,例如bpython,因为(这是fixed in v0.18)__name__
是"__console__"
。
通常做的恰恰相反:通过检查if __name__ == '__main__':
,避免在导入模块时运行某些全局代码。
我没有看到为什么其他脚本不能导入脚本功能的原因,但如果你真的想强制执行,请在if块下定义你的函数:
if __name__ == '__main__':
def func1():
pass
def func2():
pass
# put main script code here
# e.g.:
func1()
func2()
并且尝试将脚本作为模块导入的脚本只会获得一个空模块,而不是意外的sys.exit()
。