当前位置:首页>python>Python入门必看:Python 模块详解(下篇)- 包与第三方模块,零基础直接上手

Python入门必看:Python 模块详解(下篇)- 包与第三方模块,零基础直接上手

  • 2026-09-02 19:06:11
Python入门必看:Python 模块详解(下篇)- 包与第三方模块,零基础直接上手
上篇我们学习了模块的基础知识,本篇将继续深入讲解包的概念与使用、第三方模块的安装与管理,让你全面掌握 Python 模块化开发技能。

1. 包(Package)的概念

1.1 什么是包

包是包含模块的目录,本质上是一个特殊的文件夹,用于组织多个相关的模块。

对比项模块包
形式单个 .py 文件包含 __init__.py 的目录
作用存放函数、类、变量组织多个相关模块
导入方式import module_nameimport package.module_name

1.2 包的结构

一个标准的包必须包含 __init__.py 文件:

my_package/ # 包目录├── **init**.py # 包的初始化文件(必须)├── [module1.py] # 模块1├── [module2.py] # 模块2└── subpackage/ # 子包├── **init**.py└── [module3.py]

关键点:

  • __init__.py 文件标识该目录是一个包

  • 可以为空,也可以包含初始化代码


1.3 创建和使用包

示例:创建一个数学工具包

# math_tools/calculator.pydef add(a, b):    return a + bdef subtract(a, b):    return a - bdef multiply(a, b):    return a * bdef divide(a, b):    if b == 0:        return "错误:除数不能为0"    return a / b
# math_tools/converter.pydefcelsius_to_fahrenheit(c):    returnc*9/5+32defkg_to_lb(kg):    returnkg*2.20462
# math_tools/__init__.pyfrom .calculatorimportadd, subtract, multiply, dividefrom .converterimportcelsius_to_fahrenheit, kg_to_lbprint("math_tools 包已加载")

在主程序中使用包:

# main.py# 方式1:导入整个模块importmath_tools.calculatorresult=math_tools.calculator.add(10, 20)print(result)  # 30# 方式2:导入特定内容frommath_tools.calculatorimportsubtractresult=subtract(50, 20)print(result)  # 30# 方式3:导入包中的内容(通过 __init__.py)frommath_toolsimportadd, celsius_to_fahrenheitresult1=add(5, 15)result2=celsius_to_fahrenheit(0)print(result1)  # 20print(result2)  # 32.0

输出:

math_tools 包已加载30302032.0

1.4 __init__.py 详解

__init__.py 是包的初始化文件,在导入包时自动执行。

作用一:包的初始化

# my_package/__init__.pyprint("包正在初始化...")from .module1importfunc1from .module2importfunc2print("初始化完成")
# main.pyimportmy_package  # 自动执行 __init__.py# 输出:包正在初始化... 初始化完成

作用二:控制导入内容(使用 __all__)

# my_package/__init__.pydefpublic_func():    passdef_private_func():    pass# 只有 __all__ 中的内容会被导入__all__= ['public_func']
# main.pyfrommy_packageimport*public_func()    # ✓ 可以使用_private_func()  # ✗ 报错

1.5 导入方式详解

绝对导入(推荐)

# main.py - 绝对导入fromutils.helperimportsome_functionimportutils.helper

相对导入(仅包内使用)

# utils/helper.py 中的相对导入from . importother_module      # . 表示当前包from .. importmain_module      # .. 表示上级包from ... importtop_module      # 上两级

2. 第三方模块

2.1 什么是第三方模块

第三方模块是别人写好的具有特殊功能的模块,需要通过 pip 安装后才能使用。

模块类型说明示例
内置模块Python 自带,无需安装os、random、math
第三方模块需要通过 pip 安装numpy、pandas、requests
自定义模块自己编写的模块calculator.py

2.2 pip 详解

pip 是 Python 的包管理工具。

常用命令:

pip -V                      # 查看版本pip list                    # 查看已安装的模块pip install numpy           # 安装模块pip install numpy==1.24.3   # 安装指定版本pip uninstall numpy         # 卸载模块pip show numpy              # 查看模块信息python -m pip install --upgrade pip  # 更新 pip

2.3 国内镜像源

由于网络原因,直接从 PyPI 下载可能很慢,可以使用国内镜像源。

临时使用:

pip install numpy -i https://mirrors.aliyun.com/pypi/simple/

永久配置:

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/

2.4 常用第三方模块示例

示例一:requests(HTTP 请求)

import requests# 发送 GET 请求response=requests.get('https://www.baidu.com')print(f"状态码:{response.status_code}")# 发送 POST 请求data= {'username': 'admin', 'password': '123456'}response=requests.post('https://example.com/login', data=data)

示例二:numpy(数值计算)

import numpy as np# 创建数组arr=np.array([1, 2, 3, 4, 5])print(f"数组:{arr}")print(f"求和:{arr.sum()}")print(f"均值:{arr.mean()}")# 创建二维数组matrix=np.array([[1, 2, 3], [4, 5, 6]])print(f"形状:{matrix.shape}")

输出:

数组:[1 2 3 4 5]求和:15均值:3.0形状:(2, 3)

示例三:pandas(数据分析)

import pandas as pd# 创建数据框data= {    '姓名': ['张三', '李四', '王五'],    '年龄': [25, 30, 35],    '工资': [5000, 8000, 12000]}df=pd.DataFrame(data)print(df)print(df.describe())

示例四:flask(Web 框架)

from flask import Flaskapp=Flask(__name__)@app.route('/')defhello():    return'Hello, World!'if__name__=='__main__':    app.run(debug=True)

2.5 常用第三方模块一览

模块名称用途安装命令
requestsHTTP 请求库pip install requests
numpy数值计算pip install numpy
pandas数据分析pip install pandas
flaskWeb 框架pip install flask
djangoWeb 框架pip install django
matplotlib数据可视化pip install matplotlib
selenium自动化测试pip install selenium
opencv-python计算机视觉pip install opencv-python
scikit-learn机器学习pip install scikit-learn

3. 常见问题解决

3.1 pip 版本过旧

python -m pip install --upgrade pip

3.2 安装失败

# 使用镜像安装pip install numpy -i https://mirrors.aliyun.com/pypi/simple/

3.3 模块导入失败

# 确认模块已安装import sysprint(sys.modules.keys())  # 查看已导入的模块

3.4 虚拟环境

# 创建虚拟环境python -m venv myenv# 激活(Windows)myenv\Scripts\activate# 激活(Mac/Linux)source myenv/bin/activate# 在虚拟环境中安装模块pip install numpy pandas# 退出deactivate

本篇总结

知识点核心内容
包的概念包含 __init__.py 的目录,用于组织模块
包的结构__init__.py + 模块文件 + 子包
导入方式绝对导入(推荐)、相对导入(包内使用)
第三方模块需要通过 pip 安装的模块
pip 命令install、uninstall、list、show
镜像源阿里云、豆瓣、清华大学镜像
虚拟环境隔离不同项目的依赖,避免冲突

实战项目:构建完整的学生管理系统

student_system/├── __init__.py├── student.py├── course.py└── main.py
# student_system/student.pyclass Student:    def __init__(self, student_id, name, age):        self.student_id = student_id        self.name = name        self.age = age        self.courses = []    def add_course(self, course):        self.courses.append(course)    def info(self):        return f"学号: {self.student_id}, 姓名: {self.name}, 年龄: {self.age}"# student_system/course.pyclass Course:    def __init__(self, course_id, name, credits):        self.course_id = course_id        self.name = name        self.credits = credits    def info(self):        return f"课程号: {self.course_id}, 课程名: {self.name}, 学分: {self.credits}"# student_system/__init__.pyfrom .student import Studentfrom .course import Course__all__ = ['Student', 'Course']# student_system/main.pyfrom student_system import Student, Course# 创建学生和课程s1 = Student("001", "张三", 20)c1 = Course("C001", "Python 基础", 3)# 选课s1.add_course(c1)# 打印信息print(s1.info())print(c1.info())

输出:

学号:001,姓名:张三,年龄:20课程号:C001,课程名:Python 基础,学分:3

📌 恭喜你!Python 模块与包的完整知识已经学完!建议收藏并动手实践!

最新文章

随机文章