Contents
10.3. if name == ‘main’¶
这么一段代码,这段代码该怎么来理解?
10.3.1. 一个python的文件有两种使用的方法:¶
作用一,直接作为脚本执行。
作用二,import到其他的python脚本中被调用(模块重用)执行。
if name == ‘main’: 的作用就是控制这两种情况执行代码的过程, 在if name == ‘main’: 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他脚本中是不会被执行的。
10.3.2. 运行原理¶
每个python模块(python文件)都包含内置的变量__name__,当运行模块被执行的时候,__name__等于文件名(包含了后缀.py)。 如果import到其他模块中,则__name__等于模块名称(不包含后缀.py)。而“main”等于当前执行文件的名称(包含了后缀.py)。所以当模块被直接执行时,name == ‘main’结果为真;而当模块被import到其他模块中时,name ==’main’结果为假,就是不调用对应的方法。
简而言之就是:name 是当前模块名,当模块被直接运行时模块名为 main 。当模块被直接运行时,代码将被运行,当模块是被导入时,代码不被运行。
#!/usr/bin/env python
#-*- coding:utf8 -*-
'''
python源文件可以通过两种方式执行。import语句在自己的命名空间中以库模块的形式执行代码。
代码也可以主程序或者脚本的形式执行,
每个模块定义一个包含模块名称的变量__name__,程序检查改变量,确定它们在哪个模块中执行,解释器的顶级模块名
为__main__。
例如:模块可能包含一些测试代码,如果模块以主程序的形式执行,将执行这些测试代码,
如果模块知识由另一个模块导入,则不会执行测试代码。
'''
if __name__ == '__main__':
#是
pass
#statements
else:
#否
pass
#statements