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

  • 相关阅读:
    HDU 1195.Open the Lock
    HDU 2612.Find a way
    HDU 1240.Asteroids!
    HDU 1429.胜利大逃亡(续)
    HDU 1253.胜利大逃亡
    HDU 2102.A计划
    HDU 2579.Dating with girls(2)
    HDU 1782.逃离迷宫
    洛谷1297[国家集训队]单选错位
    spoj1026Favorite Dice
  • 原文地址:https://www.cnblogs.com/RioTian/p/14224547.html
Copyright © 2011-2022 走看看