【发布时间】:2011-06-02 16:44:17
【问题描述】:
我想使用if __name__ != '__main__':,然后在导入脚本时结束脚本的执行,而不是像往常一样使用if __name__ == '__main__': 并缩进文件中的所有其余代码。
但是,我无法确定是什么原因只会导致这种情况发生并且不会产生其他不良副作用。 sys.exit() 停止整个解释器,我尝试过的所有其他事情要么引发某种异常,要么是非法的。
更新:
我选择了@trutheality 的答案,因为它实现了我想要的并且非常容易开始使用。也就是说,我认为其他几个答案非常有趣和/或聪明——感谢所有回复的人——并计划在时间允许的情况下进一步调查其中的一些。我不知道做我想做的事会如此投入。
【问题讨论】:
-
您到底想要发生什么?您是否希望导入成功,但默默地什么都不做?
-
如果只是为了不缩进其余代码,算了。如果脚本足够大以至于这是一个严重的问题,那么大多数代码无论如何都应该在函数中;)
-
@JasonFruit:是的,我希望导入成功。
-
@martineau:我看不出有什么方法可以在不导入模块名称的情况下做到这一点,尽管您可以将其设为空。真的,如果你尝试导入它,你应该让它引发一个异常,并让导入脚本处理它。看起来成功但没有做任何可以被定义为成功的事情是一个问题。
-
@JasonFruit:我所说的成功是指在此之前模块中定义的所有内容都保持正常 - 这通常似乎排除了引发异常而中止模块加载的情况(除非你这样做在@David 的
partialimport答案中看起来有些险恶)。