使用__main __

时间:2018-04-30 09:47:36

标签: python

我有几个cli python脚本,它们不是要导入的目标。 所以,我把这个代码放在首位:

if __name__!='__main__':
  import sys
  sys.exit(0)

这是一种不好的做法还是一种好的做法? 主要目标是防止将所有代码放入函数并放在底部

if __name__=='__main__':
    mybig_main_run()

1 个答案:

答案 0 :(得分:2)

我认为这是一种不好的做法。

没有理由这样做。

它打破了交互式控制台,例如bpython,因为__name__"__console__"(这是fixed in v0.18

通常做的恰恰相反:通过检查if __name__ == '__main__':,避免在导入模块时运行某些全局代码。

我没有看到为什么其他脚本不能导入脚本功能的原因,但如果你真的想强制执行,请在if块下定义你的函数:

if __name__ == '__main__':
    def func1():
        pass

    def func2():
        pass

    # put main script code here
    # e.g.:
    func1()
    func2()

并且尝试将脚本作为模块导入的脚本只会获得一个空模块,而不是意外的sys.exit()