我有一个我正在构建的Python程序,可以以两种方式之一运行:第一种是调用Python main.py,它会以友好的方式提示用户输入,然后通过程序运行用户输入。另一种方法是调用python batch.py -file-它将传递所有友好的输入收集,并通过程序一次性运行整个文件的输入值。
问题是,当我运行batch.py时,它从main.py中导入了一些变量/方法/等,当它运行以下代码时:
import main
在程序的第一行,它立即出错,因为它试图运行main.py中的代码。
如何阻止Python运行我正在导入的主模块中包含的代码?
我做了一个简单的测试:
# test.py
x = 1
print("1, has it been executed?")
def t1():
print("hello")
print("2, has it been executed?")
def t2():
print("world")
print("3, has it been executed?")
def main():
print("Hello World")
print("4, has it been executed?")
print("5, has it been executed?")
print(x)
# while True:
# t2()
if x == 1:
print("6, has it been executed?")
# test2.py
import test
当执行或运行test2.py时,运行结果:
1, has it been executed?
5, has it been executed?
1
6, has it been executed?
结论:当导入的模块没有添加if __name__=="__main__":时,当前模块将运行,导入模块中不在函数中的代码将按顺序执行,而函数中未调用的代码将不执行。
此外:
def main():
# Put all your code you need to execute directly when this script run directly.
pass
if __name__ == '__main__':
main()
else:
# Put functions you need to be executed only whenever imported