1. 什么是模块?
模块是封装了特定功能的代码文件(以.py为扩展名),由变量、函数、类等组成,用于实现通用或特定的任务(如生成随机数、处理日期、网络请求等)。通过使用模块,我们可以复用代码、简化开发流程,避免重复造轮子。
2. 模块的导入方式
在Python中,使用模块前需要先导入,常用的导入方式有以下几种:
2.1 导入整个模块
使用import模块名导入整个模块,访问模块中的内容时需通过模块名.变量/函数/类的形式。
示例:使用random模块生成 1-6 的随机数(模拟骰子)
import random
# 生成5个1-6的随机整数
for _ in range(5):
print(random.randint(1, 6)) # 调用random模块的randint函数2.2 导入模块中的特定内容
使用from模块名import内容导入模块中的指定变量、函数或类,导入后可直接使用名称访问,无需前缀。
示例:导入math模块中的sqrt(开平方)和pi(圆周率)
from math import sqrt, pi
print(sqrt(16)) # 直接使用sqrt,无需math前缀,输出:4.0
print(pi) # 直接使用pi,输出:3.1415926535897932.3 导入模块中的所有内容(不推荐)
使用from模块名import *可导入模块中所有公开内容,但可能导致当前代码中的变量与模块中的名称冲突(命名污染),因此通常不建议使用。
示例(不推荐):
from math import *
print(sin(pi/2)) # 直接使用math中的sin函数,输出:1.02.4 给模块或内容重命名
使用as关键字给导入的模块或内容起别名,适用于模块名过长、名称冲突等场景。
示例:
# 给模块重命名
import datetime as dt # 将datetime模块简写为dt
print(dt.datetime.now()) # 输出当前时间,如:2025-11-07 10:00:00
# 给函数重命名
from random import randint as ri
print(ri(1, 10)) # 生成1-10的随机数,等价于randint(1,10)2.5 导入错误处理
导入不存在的模块会触发ImportError,可以通过异常处理捕获该错误。
示例:
try:
import non_existent_module # 导入不存在的模块
except ImportError:
print("模块不存在,请检查名称或是否已安装!")3. 模块的类型
Python中的模块主要分为三类:
3.1 自定义模块
由开发者自己编写的.py文件,可在项目中直接导入使用。
示例:创建并使用自定义模块
新建文件my_module.py:
# my_module.py
def greet(name):
return f"Hello, {name}!"
PI = 3.14159 # 模块中的变量在同一目录下的main.py中导入:
# main.py
import my_module
print(my_module.greet("Python")) # 调用自定义函数,输出:Hello, Python!
print(my_module.PI) # 访问自定义变量,输出:3.141593.2 标准库模块
Python预装的模块,无需额外安装即可使用,涵盖字符串处理、日期时间、文件操作等常见功能,是Python的核心优势之一。
常用标准库示例:
datetime:处理日期和时间
from datetime import datetime
today = datetime.today()
print(today.strftime("%Y-%m-%d %H:%M:%S")) # 格式化输出:2025-11-07 10:30:00os:操作操作系统(如文件路径、目录)
import os
print(os.getcwd()) # 获取当前工作目录
print(os.listdir(".")) # 列出当前目录下的文件和文件夹json:处理 JSON 数据
import json
data = {"name": "Alice", "age": 30}
json_str = json.dumps(data) # 字典转JSON字符串
print(json_str) # 输出:{"name": "Alice", "age": 30}4. 第三方模块
由社区或开发者提供的模块,需通过包管理工具安装后使用,主要存储在Python Package Index(PyPI)。
4.1 第三方模块的安装与使用
安装工具:pip
Python 默认自带pip(包管理工具),用于安装 / 卸载第三方模块。若未安装,可参考官方文档配置。
常用pip命令:
# 安装模块(以requests为例,用于网络请求)
pip install requests
# 安装指定版本
pip install requests==2.31.0
# 升级模块
pip install --upgrade requests
# 卸载模块
pip uninstall requests4.2 使用第三方模块
示例:使用requests模块发送网络请求
import requests
response = requests.get("https://www.baidu.com")
print(f"状态码:{response.status_code}") # 输出:状态码:200(表示请求成功)
print(f"页面内容前100字符:{response.text[:100]}")4.2 使用第三方模块
示例:使用requests模块发送网络请求
import requests
response = requests.get("https://www.baidu.com")
print(f"状态码:{response.status_code}") # 输出:状态码:200(表示请求成功)
print(f"页面内容前100字符:{response.text[:100]}")4.3 包(Package):模块的组织方式
当模块数量较多时,可通过包(包含多个模块的目录)来组织代码。包需包含一个init.py文件(可为空,用于标识该目录是 Python 包)。
示例1:包的结构与导入
my_package/ # 包目录
├── __init__.py # 标识为包
├── module1.py # 模块1
└── module2.py # 模块2示例2:在module1.py中定义内容:
# module1.py
def add(a, b):
return a + b示例3:在外部文件中导入包中的模块:
# 方式1:导入包中的模块
from my_package import module1
print(module1.add(2, 3)) # 输出:5
# 方式2:直接导入模块中的函数
from my_package.module1 import add
print(add(2, 3)) # 输出:54.4 模块的搜索路径
Python导入模块时,会在以下路径中查找(按顺序):
- 当前执行脚本所在目录
- 环境变量PYTHONPATH指定的目录
- Python 安装目录中的标准库路径
可通过sys.path查看搜索路径:
import sys
print(sys.path) # 输出模块搜索路径列表5. 总结
模块是Python代码复用的核心机制,通过合理使用标准库、第三方模块和自定义模块,能极大提升开发效率。掌握模块的导入方式、包的组织以及pip的使用,是Python开发的基础技能。标准库和第三方模块的详细文档可参考Python官方文档和PyPI。