模块
模块简介
- 面向过程编程
面向过程编程就好比修筑一条产品流水线,一旦需要修改某项功能,那么需要整体改造
- 什么是模块
模块就是一系列功能的结合体
- 为什么要用模块
提升开发效率,调用他人开发好的模块
- 模块的三种来源
1.内置的(python解释器自带的,能够直接导入使用)
2.第三方的(别人写好发布在网上,用前需要先下载后使用)
3.自定义的
方式一:通过pip安装命令:pip install 包名/模块名
方式二:pycharm安装步骤:
Settings>>Project>>Python interpreter

- 模块的四种表现形式
1.使用pycharm编写的代码(.py文件)
2.已被编译为共享库或DLL的C或C++扩展
3.包好一组模块的包(文件夹)包其实就是多个py文件的集合,通常会含有一个__init__.py的文件
4.使用C编写并链接到python解释器的内置模块
import句式
import md # 导入的文件模块 文件后缀不要加
多次导入相同的模块,只执行一次
首次导入模板发生的事:
运行导入文件(import句式.py)产生该文件的全局名称
运行test.py文件
产生test.py全局名称空间 运行test文件内代码 将产生的名字全部存档于test.py名称空间
在导入文件名称空间产生一个test的名字指向test.py全局名称空间1.

from...import...句式
from md import money,read1,change
特点<指名道姓导入某个名字>
一旦模块名称空间的值与当前名称空间的名称冲突时,执行的是当前的名称名称空间的变量
from...import... 同样的导入多次,也只有一次起作用
1.先产生执行文件全局名称空间
2.执行模块文件 产生模块全局名称空间
3.将模块中执行之后产生的名字全部存档于模块名称空间中
4.在执行文件中有一个money执行模块名称空间中money指向的值
- 起别名as
import md as a
from md import money as b
- 连续导入
import 模块1,模块2...
from md import 名字1,名字2...可以连续导入多个模块,但前提是要这些模块功能相似或者同属一个系列
- 通用导入
from md import * # 将md中所有的名字全部导入
当然了,可以在模块文件中对*进行限制===》all = [名字1,名字2]
- 判断文件类型
name__当文件是执行文件的时候会返回__main
如果文件是被当作模块导入则返回
循环导入问题
如果以后在导入模块的过程中出现了循环导入,那就说明程序设计的不合理,这种情况要规避掉
一旦出现这种问题,通常有两种解决方式
1.调换顺序,将彼此导入的句式代码放在后面
2.函数形式,将导入的句式放入函数体代码 等待所有名字加载完毕后再调用
模块导入顺序
1.先从内存中查找
2.再去内置函数中查找
3.最后去sys.path系统路径中查找
上述三条路径都没有查找到,就会报错
import sys
print(sys.path) # 结果是一个列表,其中第一个元素永远是当前执行文件的路径
自定义模块导入问题
1.手动将自定义模块所在的路径,添加到sys.path中
import sys
sys.path.append(r'D:\')
2.使用from...import...句式
from 文件夹名称.文件夹名称 import 模块名
from 文件夹名称.模块名称 import 名字
绝对导入与相对导入
# 一个基准:一切路径都按照执行文件的路径为准
绝对导入
始终按照执行文件所在的sys.path查找模块
相对导入
句点式
.表示当前路径
..表示上一层文件路径
其中相对导入只能在模板文件中使用,不能在执行文件中使用

浙公网安备 33010602011771号