一、介绍
(一)作用
- 对于大多数的编程语言来说都有一个入口函数,如:Java、C#都有一个包含
main() 的主类,并作为入口函数,但是python不一样,python是从脚本的第一行开始执行,没有统一的入口 - 一个python文件有两种使用方法,一种是作为脚本运行;另外一个是作为模块,使用import语句被调用到其他的py文件中。
所以if __name__ == '__main__': 的作用就是:控制这两种情况执行代码的过程。 - (1).py文件作为脚本运行时,
if __name__ == '__main__': 中的代码会被执行 (2).py文件是被import语句调用到其他.py文件中时,if __name__ == '__main__': 中的代码不会被执行。
(二)原理
if __name__ == '__main__': 中的__main__是一个记录模块名称的变量,当程序作为脚本文件运行时,__main__的 值就是'__main__' ,如果当前文件作为模块导入到其他文件当中,则返回的值是该模块的文件名称。
二、举例说明
(一)作用说明
- 目录结构:名为“py测试”的文件夹下,两个同级目录py文件:
|--py测试
|--add1.py
|--main.py
- 作为脚本文件
(1)add1.py文件中的code如下:
print ('做加法运算')
if __name__ == '__main__':
print('PyCharm')
(2)运行当前文件,即add.py文件 (此时作为脚本文件),输出结果如下:有两行输出
做加法运算
PyCharm
输出了第一个print中的字符串,同时,也输出了if __name__ == '__main__': 中的print里的内容。即:if __name__ == '__main__': 中的代码会被执行
- 作为被调用模块
(1)main.py文件中的code(就一行code)如下:
import add1 # 调用add1
(2)运行当前文件,即main.py文件 ,此时的代码中的add1是作为了调用模块,所以add1.py文件中的if __name__ == '__main__': 中的代码不会被执行,所以第二个print不会输出。 (3)运行结果如下:只有一行输出
做加法运算
(二) 原理说明
(1)add1.py文件中的代码如下:
print ('做加法运算')
print('__name__的值为:', __name__)
if __name__ == '__main__':
print('PyCharm')
(2)运行当前add1.py 文件,输出结果发现'__name__' 的值就为'__main__' ,如下图:
(3)main.py文件中调用add1模块,main.py文件的代码如下:
import add1
(4)运行当前main.py 文件,输出结果发现'__name__' 的值变了,为调用的模块名称'add1' ,所以不会执行add1.py文件中if __name__ == '__main__': 后面的代码,即:不会输出’Pycharm’如下图:
三、参考链接
link
|