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

  • 相关阅读:
    中文字,文本框,button按钮垂直居中对齐方法
    Denny_Yang的语录
    为SELECT结果集添加伪序号列
    考勤系统问题记录一:事务日志太大
    在DateTable中进行数据统计(不用循环)
    今天去游泳了
    关于HbSrv.exe
    有感于--特洛伊
    windows下DNS的问题
    Google新功能
  • 原文地址:https://www.cnblogs.com/yaos/p/14014368.html
Copyright © 2011-2022 走看看