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

    问题

    查看别人的代码经常会出现 if __name__ == '__main__',这是什么意思呢,有什么作用?

    由于每个python模块(python文件)都包含内置的变量name,当运行模块被执行的时候,name等于文件名(包含了后缀.py)。如果import到其他模块中,则name等于模块名称(不包含后缀.py)。而“main”等于当前执行文件的名称(包含了后缀.py)。所以当模块被直接执行时,name == 'main'结果为真;而当模块被import到其他模块中时,name == 'main'结果为假,就是不调用对应的方法。

    测试

    我们可以写两个简单的程序来观察这句话的作用:

    # a.py
    import b

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

    运行它们得到输出:

    $ python a.py
    Hello World from b!

    你可以发现,当一个程序作为模块被导入时,Python将这个模块里的 global()['__name__'] 设置为模块名,此外,导入后模块中的所有代码都将执行,但此时if语句的条件为False,所以不会执行。

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

    你可以发现,当程序作为文件被执行时,Python将这个文件里的 global()['__name__'] 设置为 “__main__”,此时if条件成立,里面的语句被执行。

    参考链接:

    1、https://www.shiyanlou.com/questions/102607

    2、https://stackoverflow.com/questions/419163/what-does-if-name-main-do

  • 相关阅读:
    任务框架--Quartz 配置文件
    地址和值
    线性基学习笔记
    S07
    如何在实际项目中使用PageHelper分页插件
    设计模式:原型模式
    常用JS代码片段
    Thomson Plaza里面的三家店以及水果大会
    13.搜索过滤
    07-多线程
  • 原文地址:https://www.cnblogs.com/lfri/p/10375761.html
Copyright © 2011-2022 走看看