• 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

  • 相关阅读:
    python 获取字典值
    EF 预热
    多线程实战(三)线程池
    多线程实战(二)线程同步
    C#并行编程 (Barrier,CountdownEvent,ManualResetEventSlim,SemaphoreSlim,SpinLock,SpinWait )
    多线程实战(一) 线程基础
    构建千万级web访问架构
    程序员创业,远离管理软件
    两棵树,你砍哪一棵?
    NopCommerce Html扩展方法Html.Widget
  • 原文地址:https://www.cnblogs.com/yaos/p/14014368.html
Copyright © 2020-2023  润新知