在导入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.
答案 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')
间接执行此操作。