Python一一模块:宏伟蓝图

模块可以由两个语句和一个重要的内置函数进行处理

import

       使客户端(导入者)以一个整体获取一个模块

from

       允许客户端从一个模块文件中获取特定的变量名

imp.reload

       在不终止Python程序的情况下,提供了一种重新载入模块文件代码的方法

为什么使用模块

从抽象的视角来看,模块至少有三个角色,如下所示:

代码重用

       在模块文件中的代码是永久的,可以按照需要任意次数地重新载入和重新运行模块。除了这一点之外,模块还是定义变量名的空间,被认作是属性,可以被多个外部的客户端引用。

系统命名空间的划分

       模块在Python中是最高级别的程序组织单元。从根本上讲,它们不过是变量名的软件包。模块将变量名封装进了自包含的软件包,这一点对避免变量名的冲突很有帮助。

实现共享服务和数据

       从操作的角度来看,模块对实现跨系统共享的组件是很方便的,而且只需要一个拷贝即可。例如,如果你需要一个全局对象,这个对象会被一个以上的函数或文件使用,你可以将它编写在一个模块中以便能够被多个客户端导入。

Python程序架构

如何组织一个程序

        在Python中,顶层文件(又称脚本)包含了程序的主要的控制流程:这就是你需要运行来启动应用的文件。模块文件就是工具的库,这些工具是用来收集顶层文件(或者其他可能的地方)使用的组件。顶层文件使用了在模块文件中定义的工具,而这些模块是用来其他模块所定义的工具。

导入和属性

        

标准库模块

        Python自带了很多实用的模块,称为标准链接库。参考手册:https://docspy3zh.readthedocs.io/en/latest/library/

import如何工作

程序第一次导入指定文件时,会执行三个步骤:

1. 找到模块文件

2. 编译成位码(需要时)

3. 执行模块的代码来创建其所定义的对象

记住:这三个步骤只在程序执行时,模块第一次导入时才会进行。在这之后,导入相同模块时,会跳过这三个步骤,而只提取内存中已加载的模块对象。从技术上讲,Python把载入的模块存储到一个名为sys.modules的表中,并在一次导入操作的开始检查该表。如果模块不存在,将会启动一个三个步骤的过程。

1. 搜索

    Python必须查找到import语句所引用的模块文件

2. 编译(可选)

     遍历模块搜索路径,找到符号import语句的源代码文件后,如果必要的话,Python接下来会将其编译成字节码。

     注意:只有被导入的文件才会在机器上留下.pyc。顶层文件通常是设计成直接执行,而不是被导入的。设计一个文件,使其作为程序的顶层文件,并同时扮演被导入的模块工具的角色也是有可能的,这类文件既能执行也能导入。

3. 运行

     import操作的最后步骤是执行模块的字节码。

模块搜索路径

Python搜索模块的路径:
(1)、程序的主目录
(2)、PTYHONPATH目录(如果已经进行了设置)
(3)、标准连接库目录(一般在/usr/local/lib/python2.X/)
(4)、任何的.pth文件的内容(如果存在的话).新功能,允许用户把有效果的目录添加到模块搜索路径中去.pth后缀的文本文件中一行一行的地列出目录。(有需要的话也会在Lib\site-packages目录下建一个.pth的文件)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值