您的位置:首页 > 编程语言 > Python开发

python编程中的if __name__ == 'main' 的作用和原理

2017-12-22 21:06 399 查看
1)程序入口

1.1、以C和C++为例,需要有一个main函数来作为程序的入口,也就是程序的运行会从main函数开始。

1.2、而python属于脚本语言,不像编译型语言那样先将程序编译成二进制再运行,而是动态的逐行解释运行。也就是从脚本第一行开始运行,没有统一的入口。

1.3、一个 Python 源码文件除了可以被直接运行外,还可以作为模块(也就是库)被导入。不管是导入还是直接运行,最顶层的代码都会被运行(Python 用缩进来区分代码层次)。

1.4、if __name__ == '__main__' 就相当于是 Python 模拟的程序入口。由于模块之间相互引用,不同模块可能都有这样的定义,而入口程序只能有一个。到底哪个入口程序被选中,这取决于 __name__ 的值。

2)__name__

2.1、__name__ 是内置变量,用于表示当前模块的名字,同时还能反映一个包的结构。

2.2、如果一个模块被直接运行,则其没有包结构,其 __name__ 值为 __main__。

2.3、if __name__ == '__main__' 简单的理解就是: 如果模块是被直接运行的,则代码块被运行,如果模块是被导入的,则代码块不被运行。

3)__main__.py 文件与 python -m

3.1、Python 的 -m 参数用于将一个模块或者包作为一个脚本运行,而 __main__.py 文件则相当于是一个包的”入口程序“。

3.2、总结:

1、 加上 -m 参数时会把当前工作目录添加到 sys.path 中,而不加时则会把脚本所在目录添加到 sys.path 中。

2、 加上 -m 参数时 Python 会先将模块或者包导入,然后再执行

3、 __main__.py 文件是一个包或者目录的入口程序。不管是用 python package 还是用 python -m package 运行时,__main__.py 文件总是被执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: