zoukankan      html  css  js  c++  java
  • if __name__ == '__main__'

    The simplest explanation for the __name__ variable (imho) is the following:

    Create the following files.

    # a.py
    import b
    
    # b.py
    print "Hello World from %s!" % __name__
    
    if __name__ == '__main__':
        print "Hello World again from %s!" % __name__
    

    Running them will get you this output:

    $ python a.py
    Hello World from b!
    

    As you can see, when a module is imported, Python sets globals()['__name__'] in this module to the module's name.

    $ python b.py
    Hello World from __main__!
    Hello World again from __main__!
    

    As you can see, when a file is executed, Python sets globals()['__name__'] in this file to __main__.

    之所以要有__name__ == '__main__'这个语句是因为:

    有时候我们需要 直接运行 一个模块,有时候我们需要 引入 一个模块而不是直接运行。加入这条语句,可以区别这个模板被直接运行和被引入两种下情况 不同执行效果

    first_module.py

    print ("First Module's Name: {}".format(__name__))
    

    输出结果:

    First Module's Name: main

    second_module.py

    import first_module
    
    print ("Second Module's Name: {}".format(__name__))
    
    

    输出结果:

    First Module's Name: first_module
    Second Module's Name: main

    如果 first_module.py

    def main():
        print ("First Module's Name: {}".format(__name__))
    
    if __name__ == '__main__':
        main()
    

    输出结果:

    First Module's Name: main

    这时如果 second_module.py

    import first_module
    
    print ("Second Module's Name: {}".format(__name__))
    

    输出结果:

    Second Module's Name: main

  • 相关阅读:
    Educational Codeforces Round 80 (Rated for Div. 2)
    2020 CCPC Wannafly Winter Camp
    Codeforces Round #613 (Div. 2)
    Codeforces Round #612 (Div. 2)
    Hello 2020
    Good Bye 2019
    Codeforces Round #590 (Div. 3)
    依赖注入
    Spring 拦截器
    rsync服务端一键安装rsync脚本(非源码)
  • 原文地址:https://www.cnblogs.com/yaos/p/7009255.html
Copyright © 2011-2022 走看看