美文网首页
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