一、模块的概念
1、模块的定义
模块是一个包含有一系列变量,函数,类等组成的程序组
模块是一个文件,模块文件名通常以.py结尾
2、模块的作用
让一些相关的变量、函数、类等有逻辑的组织在一起,让逻辑结构更加清晰
模块中的变量、函数和类等可供其他模块或程序调用
3、模块的分类
d、用户自己编写的模块(可以作为其他人的第三方模块)
4、模块化编程的优点
b、使代码更加易于维护
c、提高代码的复用率
d、模块化编程有助于解决函数名和变量名冲突问题
二、模块的导入
1、import 语句
语法
import 模块名1 [as 模块新名1], 模块名2[as 模块新名2], ....
作用
将一个模块整体导入到当前模块中
示例
import math # 导入数学模块
import sys, os # 导入sys和os模块
import copy as cp
属性用法
模块名.属性名
(5) # 求5的阶乘
2、from import 语句
语法
from 模块名 import 模块属性名 [as 属性新名1], 模块属性名2 [as 属性新名2]
作用
将某模块的一个或多个属性导入到当前模块的作用域
示例
from math import pi
from math import sin
from math import factorial as fac
3、from import * 语句
语法
from 模块名 import *
作用
将某模块的所有属性导入到当前的模块
示例
from math import *
s = sin(pi/2)
print(factorial(10))
三、模块的加载和执行
1、import 语句搜索模块的路径顺序
a. 搜索程序运行时的路径(当前路径)b. 提供的路径
c. 搜索内置模块
2、PYTHONPATH环境变量
此环境变量的值会在python3的解析器启动时自动加载到列表中3、加载自定义模块方法
a、方法1
把自定义的模块和运行的代码放在同一个目录下
b、方法2
在运行的代码中追加(“指定自定义的模块路径”)
c、方法3
和内置模块放到一起(不建议)
d、方法4
配置当前终端的环境变量
$ export PYTHONPATH=$PYTHONPATH:/home/xxx/指定自定义的模块路径
$ printenv
注: Linux/Unix 用命令printenv来查看所有的环境变量,export仅作用于当前的终端
4、模块的加载过程
在模块导入时,模块所有语句会执行如果一个模块已经被导入,则再次导入时不会重新执行模块内的语句
5、模块的重新加载
通过imp模块的reload属性重载指定模块
import mymod # 自定义的模块
import imp # 导入imp库
(mymod) # 重新加载已经加载过的mymod 模块
6、模块被导入和执行的过程
a. 先搜索相关路径找模块(.py文件)b. 判断是否有此模块对应的.py文件,如果.pyc文件比.py文件新,则直接加载.pyc文件
c. 否则用模块.py 文件生成.pyc并加载执行
7、模块的编译 compile
编译 解释执行-----> -------> python3
四、补充
1、dir 函数
dir([对象]) 返回一个字符串列表
作用
a、如果没有参数调用,则返回当前作用域内所有变量的列表
b、如果给定一个对象作为参数,则返回这个对象的所在变量(属性)列表
1) 对于一个模块,返回这个模块的全部变量
2) 对于一个类对象,返回类对象的所有变量,并递归基类对象的所有变量
3) 对于其它对象,返回所有变量、类变量和基类变量
五、附录
人工智能(python)—— 目录汇总