Python----模块

1 模块是最高级别的程序组织单元,它将程序代码和数据封装起来以便重用,每一个文件都是一个模块.可以说在Python程序架构里一个程序就是一个模块的系统,它有一个顶层脚本文件(启动后运行程序)和多个模块文件(用来导入工具库)组成.

2 标准库模块:python自带的模块

3 import的大致流程

  1. 找到模块文件
  2. 编译成位码(需要时)
  3. 执行模块的代码来创建其所定义的对象

4 Python使用路径组件的方式

  1. 程序的主目录
  2. PYTHONPATH目录
  3. 标准链接库目录
  4. 任何.pth文件的内容

5 模块文件的选择

1.源代码文件.py 2.字节码文件.pyc 3.ZIP文件组件,导入时会自动解压缩   4.内存内映射,对于frozen可执行文件
5.Java类,在Jython版本中的Python中 6. .NET组件,在IronPython版本的Python中
7.C语言编写的编译好的内置模块  等

6 sys.path列表----模块搜索路径在及其上的实际配置

7 第三方的扩展,通常使用标准链接库中的distutils工具来自动安装

8 import

9 from:from会把变量名赋值到另一个作用域,可以直接在脚本中使用复制后的变量名,而不需要通过模块

10 from *

特殊的from形式:当我们使用*时,会取得模块顶层所有赋了值得变量名的拷贝.从根本上来说,这就是把一个模块的命名空间融入另一个模块之中,实际效果就是可以让我们少输入一些

11 导入只发生一次

12 import和from 都是隐形的赋值语句

  1. import将整个模块对象赋值给一个变量名
  2. from将一个或多个变量名赋值给另一个模块中间名的对象

13 文件间变量名的改变

以from赋值而来的变量名和其来源的文件之间并没有联系,为了实际修改另一个文件中的全局变量名,必须使用import

14 from语句潜在的陷阱

有破坏命名空间的潜质,出现相同的变量名会被悄悄覆盖.但实际上,省略输入模块的变量名,通常是很方便的
但当使用不同模块内定义的相同变量名的变量时,必须使用import

15 模块就是命名空间(变量名建立所在的场所)

  1. 模块语句会在首次导入时执行
  2. 顶层的赋值语句会创建模块属性
  3. 模块的命名空间能通过属性_dict_或dir(M)获取
  4. 模块就是一个独立的作用域(本地变量就是全局变量)

16 重载模块------reload(module)

  1. reload会在模块当前命名空间内执行模块文件的新代码
  2. 文件顶层赋值语句会使得变量名换成新值
  3. 重载会影响所有使用import读取了模块的客户端
  4. 重载只会对以后使用from的客户端造成影响

17 包导入

在import和from语句中列举简单文件名的地方,可以改成列出路径的名称,彼此以点号相隔

18 相对导入

19 模块设计理念

  1. 总是在python的模块内编写代码
  2. 模块耦合要降到最低:全局变量
  3. 最大化模块的黏合性:统一目标
  4. 模块应该少去修改其他模块的变量

20 注意

  1. 顶层代码的语句次序的重要性
  2. from复制变量名,而不是连接
  3. 递归形式的from导入无法工作

21 如果模块的_name_变量是字符串"main",代表该文件是作为顶层脚本运行的,而不是被程序中另一个文件所导入的,也就是说,这个文件作为程序在使用,而不是一个库.

你可能感兴趣的:(Python,python,模块)