在Python中,导入模块时,实际上会把被导入的模块执行一遍,如下:
先看被调用的模块:
test.py:
def haha():
print("哈哈")
haha()
再看主程序
main.py:
import test
print("一棵大树")
主程序执行结果是:
哈哈
一棵大树
那怎么才能只是单纯调用而不执行被调用模块的代码呢?要想被调用模块代码不被执行,前提得知道变量name是什么意思,简单来说就是,如果该模块不被别的程序导入的话,name的值就是” main“,如果当此模块被别的程序导入的话,那么这个被导入时,模块内的name值就是文件的名字(如:test(不带.py)),如下:
test_1.py:
def haha():
print("哈哈")
haha()
print(__name__)
test_1.py执行结果为:
哈哈
main
如果test_1被test_2导入引用的话,如:
test_2:
import test_1
print("一棵大树")
test_2的运行结果为:
哈哈
test_1
一棵大树
所以我们在被调用的模块中test_1.py中,可执行的代码前加上这么一句判断,if name == 'main':,被调用时,可执行的代码就不会被执行了!
即
test_1.py:
def haha():
print("哈哈")
if __name__ == '__main__':
haha()
print(__name__)
这样在被调用时,就不会执行:haha()和print(name)这两条可执行代码。
而在自身单独运行时(即name == 'main')时,会执行haha()和print(name)这两条可执行代码。
参考资料:https://blog.csdn.net/haijiege/article/details/85007543
网友评论