对Python中if __name__ == '__main__'的理解
今日工作的时候杰哥和我提醒了我写的代码问题,很多时候没有考虑到很多的资源调用和程序编排的考虑,给我提出了多使用
提交的python文件,如果只是自己文件内执行用到,加上
f name == ‘main‘:
我一开始的时候,觉得只是为了节省资源的使用问题。后来在杰哥的解释下明白了一些问题。
为了不重复执行,例如a.py
面执行了代码片段,b.py import了a.py,a.py的代码就会被执行到。
果a.py的代码放在if name == ‘main‘:里面,就只有当你单独执行a.py的时候会执行到。b.py import的时候不会执行
1、这段代码的功能
一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行。因此1
2
3if __name__ == 'main': 的作用就是控制这两种情况执行代码的过程,
在if __name__ == 'main': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,
而import到其他脚本中是不会被执行的。
例如我们在test.py中书写一下代码:
1 | print "I'm the first." |
然后在同一文件夹新建名称为import_test.py的脚本,只输入如代码:1
import test
执行import_test.py脚本,输出结果如下:
1 | I'm the second. |
只输出了第一行字符串。即,
1 | if __name__=="__main__": 之前的语句被执行,之后的没有被执行。 |
2、运行的原理
1 | 每个python模块(python文件,也就是此处的test.py和import_test.py)都包含内置的变量__name__, |