• 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一个项目的运行中,除了主程序入口,最大的颗粒对象就是模块,剩下的函数,类,实例等等,只不过是某一个模块的属性而已。

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

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

  • 相关阅读:
    03 重定向,请求转发,cookie,session
    02 http,servlet,servletconfig,HttpServletRequest ,HttpServletResponse
    02 JDBC相关
    01 mysql
    16 反射,枚举,新特性
    13 递归练习
    12 IO流
    11 异常
    兼容当前五大浏览器的渐变颜色背景gradient的写法
    Electron Browser加载iframe(webview src属性)
  • 原文地址:https://www.cnblogs.com/sidianok/p/14392852.html
Copyright © 2020-2023  润新知