if__name__==__main__

Posted myshuzhimei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了if__name__==__main__相关的知识,希望对你有一定的参考价值。

在大多数编排得好一点的脚本或者程序里面都有这段if __name__ == ‘main‘: ,这段代码的功能:

一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行。因此if __name__ == ‘main‘: 的作用就是控制这两种情况执行代码的过程,在if __name__ == ‘main‘: 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他脚本中是不会被执行的。
 
原理:每个python模块(python文件)都包含内置的变量__name__,当运行模块被执行的时候,__name__等于文件名(包含了后缀.py);如果import到其他模块中,则__name__等于模块名称(不包含后缀.py)。而“__main__”等于当前执行文件的名称(包含了后缀.py)。进而当模块被直接执行时,__name__ == ‘main‘结果为真。
 
简单地说:
if __name__=="__main__":
只在本程序内起作用,本程序(其他py文件)以外的程序只能调用本程序的def模块,if __name__=="__main__": 语句涵盖的内容调用不了。一般使用情况是导入其他模块时,并不想执行所有代码。
 
 

以上是关于if__name__==__main__的主要内容,如果未能解决你的问题,请参考以下文章

if __name__ == "__main__": 做啥?

if __name__ == "__main__": 做啥?

Python中的构造“ if __name__ == '__main__'”

为啥 def main(argv=[__name__]) 和 if __name__ == "__main__": sys.exit(main(sys.argv))?

`if __name__ == '__main__'` 等价于 Ruby

unittest: if __name__ == "__main__" 理解