(1) “__name__” 是内置变量,用于表示当前模块的名字,同时还能反映一个包的结构。
(2)如果一个模块被直接运行,则其没有包结构,其 “__name__ ”值为“ __main__”.
- 理解1:简单理解
如果模块是被直接运行的,则代码块被运行,如果模块是被导入(import)的,则代码块不被运行。 - 理解2:模拟的程序入口
对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,都需要有一个main
函数来作为程序的入口。
Python 则不同,它属于脚本语言,不像编译型语言那样先将程序编译成二进制再运行,而是
动态的逐行解释运行
。也就是从脚本第一行开始运行,没有统一的入口。(define的内容并不会被执行,只有被调用了才会执行)
if __name__ == ‘__main__’ 就相当于是Python 模拟的程序入口
。Python 本身并没有规定这么写,这只是一种编码习惯。由于模块之间相互引用,不同模块可能都有这样的定义,而入口程序只能有一个。到底哪个入口程序被选中,这取决于 __name__ 的值。
https://blog.konghy.cn/2017/04/24/python-entry-program/
- 理解3:代码私有化
编写私有化部分 ,这句代码以上的部分,可以被其它的调用,以下的部分只有这个文件自己可以看见,如果文件被调用了,其他人是无法看见私有化部分的(也就是无法执行)
https://www.zhihu.com/question/49136398