美文网首页
4.2.python入门之if __name__ == '__m

4.2.python入门之if __name__ == '__m

作者: LIKESUNE | 来源:发表于2020-12-16 14:22 被阅读0次

在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

相关文章

网友评论

      本文标题:4.2.python入门之if __name__ == '__m

      本文链接:https://www.haomeiwen.com/subject/obwngktx.html