在python中,我如何获得与__name__ =='__ main__'时相同的行为:

时间:2012-01-06 08:40:33

标签: python

在导入main.py而不是运行它时,运行此代码块的最佳方法是什么?

#main.py
if __name__ == '__main__':
    #Do something interesting. 


#Do something to have the interesting code run after importing the file. 
import main.py
main.__main__() # wrong of course. 

4 个答案:

答案 0 :(得分:10)

将该代码放入函数中,并在if内调用。

def main():
    # ...

if __name__ == '__main__':
    main()

或者根本不使用if

答案 1 :(得分:2)

您甚至不需要检查任何内容,因为在初始化时第一次导入模块代码时会执行。特别是,根据documentation

  

模块可以包含可执行语句以及函数定义。这些语句用于初始化模块。它们仅在模块第一次导入某个地方时执行。

如果您需要的是在导入模块时要执行的代码,而不是在执行模块时执行,那么Antoine Pelisse的响应应该是可行的(当然,您也可以检查{{1直接)。

答案 2 :(得分:1)

你在找那个吗?

#main.py
if __name__ == '__main__':
    # Do something interesting when running main.py directly
    pass
else:
    # Do something when the script in imported
    pass

答案 3 :(得分:0)

假设您想在不修改main.py模块的情况下执行此操作(以便“Cat Plus Plus”的答案不适用):

你不能直接; __name__是只读的。 (编辑:这实际上并不完全正确,因为您可以使用imp模块在​​加载文件时明确指定它 - 请参阅How to make __name__ == '__main__' when running module上的第一个答案。)

但是,您可以使用execfile('main.py')间接执行此操作。