关于模块和包,以及程序入口,(__name__)

模块(moudle)本质上是含有代码可被python调用的文件(.py, c或者c++的扩展),每一个模块内部都有一些函数或者变量属性,每个模块都有一个__name__变量记录这个模块的名字,这个变量是全局变量,保证其他python文件想要import时如何确定该文件即是要导入的文件。

包(package是一系列模块构成的集合),每一个包相当于许多模块的集合,且每个包都有一个__init__.py模块,里面可以是空的也可以不是空的,__init__.py的模块名字就是包的名字。

如果正在执行的python文件没有被其他文件导入,(即不是作为模块被import)此时这个文件是程序的入口,相当于一开始就在浅层执行的文件,而不需要python去文件目录中寻找对应的文件来导入代码,这时其__name__='__main__', 也就是正在执行的作为程序入口的文件(不像是模块)的名字是__main__.

#一个进程只对应一个模块的实例,无论被导入多少次,每个模块在整个解释器进程仅有一个实例存在。
#在不同的命令行窗口,不同的notebook是不同的解释器进程。

1 import m

2 m.__name__

3 __name__ 

输出:

原文地址:https://www.cnblogs.com/zy1120192493/p/13121908.html