Python:if __name__ == '__main__'
2020-03-21 本文已影响0人
AI秘籍
1. 含义和作用
对于一个python文件,其通常有两种使用方法,
①是作为脚本直接执行,
②是 import 到其他的 python 脚本中被调用(模块重用)执行。
因此 if _ name _ _ == ' _ _ main _ _': 的作用就是控制这两种情况执行代码的过程,在 if _ name _ _ == ' _ _ main _ _': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,
而 import 到其他脚本中是不会被执行的。
举例说明如下:
①直接执行:
![](https://img.haomeiwen.com/i19677871/8f66e52b5b5248d5.png)
![](https://img.haomeiwen.com/i19677871/400c444dd4f24fc6.png)
可以成功 print 两行字符串。
即,if _ name==" main _": 语句之前和之后的代码都被执行。
②import执行:
![](https://img.haomeiwen.com/i19677871/48a27be15fd00486.png)
![](https://img.haomeiwen.com/i19677871/dc4927ab21c5185b.png)
只print了第一行字符串。
即,if name=="main": 之前的语句被执行,之后的没有被执行。
2. 运行原理
其实,在每个python文件中都包含内置的变量_ _ name _ ,
当该文件被直接执行的时候, _ name _ 的值就等于文件名包含后缀名.py;
当该文件被import到其他文件中执行时, _ name _ 的值等于模块该文件的名称不包含后缀名.py.
然而 _ _main _ _的值始终等于当前文件的名称包含.py;
因此,执行if语句的时候,_ _ name _ _ == '_ _ main _ _'判断为真或假.
![](https://img.haomeiwen.com/i19677871/b09aca9ff21916ae.png)
![](https://img.haomeiwen.com/i19677871/2fdbe902b17236bc.png)
![](https://img.haomeiwen.com/i19677871/e154c3b72e60fc3e.png)
![](https://img.haomeiwen.com/i19677871/14df4949b7be6a96.png)