Python模块学习的一段时间的心得以及对Python运行的个人理解。

Python是一门面对对象的语言,随着学习的深入,对Python的理解也有了一些自己的想法。

当我们去运行Python脚本的时候,是将一个Python的主程序入口文件交给Python解释器,当然这中间还由一些源文件转换成pyc的二进制文件等过程,我就暂且跳过。

 

就我个人知道,给解释器传递的时候,只能传递进去一个Python主文件。这个主文件是一个特殊的存在,Python解释器将逐条解释运行该文件的内容。

 

这是一个文件,且当文件运行的时候的逻辑,而且当主文件运行的时候,主文件的__file__属性是不显式路径的,这与一个模块中的__file__显示不一样,模块中的__file__是显式绝对路径的。

 

当一个项目运行的时候,肯定会拆成一个主文件入口,另外的全部都是模块或者包的形式存在与项目中,当主文件运行的时候,各个模块或者包

 

在Python中将都以模块的形式参与程序的运行。每一个模块都是一个对象,这个对象携带着自己的变量作用域空间当着自己的属性。

 

在主文件的入口,你还可以导入模块自己,这与主程序入口的文件是两个对象。模块是可以修改的自身的属性的,但主程序入口的文件对象,我无法通过模块的方式找到它,并修改它的属性。

 

Python一个项目中,有很多不同的模块,不同的包,各个模块与包之间的导入不可能导入一次,然后内存删除一次,这样的话,执行的效率会很低。

Python项目执行中,Python通过sys.module中保存各个被导入过的模块,通过字典的形式保存着各个模块对象,在下次调用的时候,可以直接从该字典中,重复使用该模块对象。

 

当导入Python的模块的时候,第一优先导入内置的模块,第二通过sys.modules去找,最后将根据sys.path的路径的优先级情况,寻找模块。

 

可以简单的理解为,Python一个项目的运行中,除了主程序入口,最大的颗粒对象就是模块,剩下的函数,类,实例等等,只不过是某一个模块的属性而已。

 

通过模块的互相导入,可以让各个模块里的属性在不同的模块间使用。

 

不知道另外的程序的运行逻辑,但我感觉应该都差不多吧。 

posted @ 2021-02-09 14:25  就是想学习  阅读(192)  评论(0编辑  收藏  举报