在python中,包和模块是代码组织和管理的重要概念。它们将代码分割成易于维护和复用的结构。
一、模块
1、基本概念
定义:模块是一个Python文件,每一个 .py 文件就是一个模块
作用:用于组织代码,避免代码重复,提高复用性
使用:通过 import 语句导入模块中的内容
2、模块的导入
导入一个模块到当前程序:
import 模块名 [as 模块新名字1]
导入一个模块内部的部分属性到当前程序:
from 模块名 import 模块属性名 [as 属性新名]
导入一个模块内部的全部属性到当前程序:
from 模块名 import *
(可以通过使用 as 自己给导入的模块取个名字,有的模块名字复杂太长,取个简单的名字能让代码更易理解,更简洁)
3、内部属性
__file__ 绑定模块的路径
__name__ 绑定模块的名称
如果是主模块(首先启动的模块)则绑定 '__main__'
如果不是主模块则 绑定 xxx.py 中的 xxx 这个模块名
二、系统模块
Python内置的模块,安装Python时已包含,提供基础功能,比如数学运算、文件操作、网络通信等
特点:
即用即导入:直接import
即可使用
性能高效:通常使用 C 语言实现
常见的系统模块:
模块 | 功能 | 官方文档 |
---|---|---|
math | 数学运算 | math --- 数学函数 — Python 3.12.10 文档 |
os | 操作系统接口 | os --- 多种操作系统接口 — Python 3.13.5 文档 |
os.path | 路径相关 | os.path --- 常用的路径操作 — Python 3.13.5 文档 |
datetime | 日期和时间 | datetime --- 基本日期和时间类型 — Python 3.13.5 文档 |
random | 随机数生成 | random --- 生成伪随机数 — Python 3.13.5 文档 |
time | 时间 | time --- 时间的访问和转换 — Python 3.13.5 文档 |
三、第三方模块
由社区或公司开发,通过包管理工具(如`pip` )安装,用于实现更高级或更具体的功能,如数据科学、图像处理、网络爬虫等
常见模块:
模块 | 功能 | 示例 |
---|---|---|
numpy | 数值计算 | 科学运算、矩阵操作 |
pandas | 数据分析 | 数据清洗与处理 |
matplotlib | 数据可视化 | 绘制图表 |
requests | HTTP请求处理 | 爬取网页内容,调用API |
flask | Web应用框架 | 快速搭建Web服务 |
pip install 模块名
(安装时可以通过 "模块名==版本号" 的方式来指定想安装的版本号)
安装步骤:
1、进入终端:(win + r 输入cmd、或者打开文件管理在地址处输入cmd、又或者直接在电脑上搜索终端 、命令提示符,用自己喜欢的方式即可)
2、进入想安装模块的环境输入安装命令(这里以numpy模块为例)
(不指定版本默认最新版)
3、通过 import 即可导入使用了
四、自定义模块
用户自己编写的模块,用于复用代码
文件名以 .py 结尾,存放自定义的函数、类等
1、创建模块
创建一个 util.py 文件:
# utils.py
def add(a, b):
return a + b
def greet(name):
return f"Hello, {name}!"
创建一个 main.py 文件,并导入自定义模块 util.py :
# main.py
import utils
print(utils.add(3, 5)) # 输出: 8
print(utils.greet("Alice")) # 输出: Hello, Alice!
五、包
1、基本概念
包是包含多个模块的目录
包的本质是一个包含 __init__.py 文件的文件夹
文件 __init__.py 可为空,也可以包含初始化代码
作用:用于组织模块的集合,形成层次化的结构,便于管理大型项目
2、导入包和子包
# 同模块的导入规则
import 包名 [as 包别名]
import 包名.模块名 [as 模块新名]
import 包名.子包名.模块名 [as 模块新名]
from 包名 import 模块名 [as 模块新名]
from 包名.子包名 import 模块名 [as 模块新名]
from 包名.子包名.模块名 import 属性名 [as 属性新名]
# 导入包内的所有子包和模块
from 包名 import *
from 包名.模块名 import *
3、__init__.py
__init__.py$ 用于初始化Python包或模块
作用:
1. 标识包目录: 告诉Python解释器当前目录应被视为一个包。
2. 执行初始化代码: 可以包含任何代码,通常用于包的初始化操作,如变量初始 化、导入模块等。这些代码在包被导入时执行。
3. 控制包的导入行为: 通过 __all__
变量明确指定从包中可以导入哪些模块,从 而限制包的公开接口。
4. 提供包级别的命名空间: __init__.py
中定义的变量和函数可以在包的模块中共 享。
5. 批量导入模块: 可以在 __init__.py
文件中批量导入模块,这些模块可以更方 便地使用。
六、模块与包的区别
模块 | 包 |
---|---|
一个Python文件 | 一个包含__init__.py 的文件夹 |
提供基本功能单元 | 用于组织多个模块 |
文件名为.py | 目录名 |