目录

前言

第一章:Python模块基础认知

1.1 什么是Python模块

1.2 模块的核心作用

1.3 模块的分类

第二章:模块的导入与使用

2.1 基本导入方式(import 语句)

2.1.1 导入整个模块

2.1.2 给模块起别名(简化调用)

2.2 导入模块中的特定功能

2.2.1 导入单个功能

2.2.2 导入多个功能

2.2.3 导入模块中的所有功能(不推荐)

2.3 导入自定义模块的注意事项

第三章:常用内置模块实战

3.1 math模块(数学运算)

3.2 os模块(系统操作)

3.2.1 目录相关操作

3.2.2 文件相关操作

3.3 datetime模块(时间处理)

3.3.1 获取当前日期和时间

3.3.2 日期时间的格式化(重点)

3.3.3 日期时间的计算

3.4 sys模块(Python解释器交互)

第四章:自定义模块实战

4.1 自定义模块的创建

4.2 自定义模块的导入与使用

4.3 自定义模块的进阶:包(Package)

4.3.1 包的创建步骤

4.3.2 包的导入方式

第五章:第三方模块的安装与使用

5.1 pip工具的基础使用

5.2 高频第三方模块实战

5.2.1 requests模块(网络请求)

5.2.2 pandas模块(数据分析)

第六章:模块学习总结与拓展

6.1 核心知识点总结

6.2 学习拓展建议

6.3 常见问题解决


前言

在Python编程中,模块(Module)是组织代码的核心方式,它能将功能相近的代码封装成独立文件,实现代码复用、简化开发、便于维护。无论是Python内置的标准模块,还是第三方模块、自定义模块,都是Python开发中不可或缺的部分。本教程将从模块的基础概念出发,逐步讲解模块的导入、使用、自定义,以及常用内置模块和第三方模块的实战用法,适合Python入门及进阶学习者参考。

学习目标:掌握模块的核心概念与导入方式;熟练使用常用内置模块;能够独立编写自定义模块;学会安装和使用第三方模块,解决实际开发问题。

第一章:Python模块基础认知

1.1 什么是Python模块

Python模块本质上是一个以.py为后缀的Python文件,文件中包含了Python变量、函数、类、语句等代码。简单来说,模块就是一个“代码工具箱”,里面封装了特定的功能,我们可以在其他Python文件中导入这个“工具箱”,直接使用里面的功能,无需重复编写代码。

例如:Python自带的math模块,就是一个封装了数学运算功能的文件,里面包含了求平方根、三角函数、常数π等功能,我们无需自己编写这些复杂的运算代码,导入后即可直接使用。

1.2 模块的核心作用

  • 代码复用:将常用功能封装成模块,在多个项目、多个文件中重复使用,避免重复编码,提高开发效率。

  • 代码模块化:将一个复杂的项目拆分成多个模块,每个模块负责一个特定的功能,使代码结构更清晰,便于后期维护和调试。

  • 命名空间隔离:不同模块中的变量、函数、类名称可以重复,不会相互冲突(通过“模块名.功能名”的方式调用,避免命名污染)。

1.3 模块的分类

Python模块主要分为三大类,覆盖了开发中的大部分场景:

  1. 内置模块(标准库):Python安装完成后自带的模块,无需额外安装,直接导入即可使用,如mathsysosdatetime等,是Python开发的基础工具。

  2. 自定义模块:开发者根据自身需求编写的.py文件,封装项目中常用的功能,供项目内部或其他项目使用。

  3. 第三方模块:其他开发者或组织开发的、供公众使用的模块,需要通过包管理工具(如pip)安装后才能使用,如requests(网络请求)、numpy(数据处理)、pandas(数据分析)等。

第二章:模块的导入与使用

导入模块是使用模块功能的前提,Python提供了多种导入方式,适用于不同的使用场景,核心原则是“按需导入”,避免导入不必要的功能,节省内存。

2.1 基本导入方式(import 语句)

2.1.1 导入整个模块

语法:import 模块名

使用方式:模块名.函数名()模块名.变量名模块名.类名()

示例:导入内置math模块,使用其求平方根和π常数的功能

# 导入整个math模块
import math

# 使用math模块中的sqrt()函数(求平方根)
result = math.sqrt(16)
print("16的平方根是:", result)  # 输出:16的平方根是:4.0

# 使用math模块中的pi变量(圆周率)
print("圆周率π的值是:", math.pi)  # 输出:圆周率π的值是:3.141592653589793

2.1.2 给模块起别名(简化调用)

当模块名较长时,可以给模块起一个简短的别名,方便后续调用,语法:import 模块名 as 别名

示例:给numpy模块(第三方模块)起别名np(行业通用写法)

# 导入numpy模块并起别名np
import numpy as np

# 使用别名调用模块功能
arr = np.array([1, 2, 3, 4])  # 创建数组
print("数组内容:", arr)  # 输出:数组内容:[1 2 3 4]

2.2 导入模块中的特定功能

如果只需要使用模块中的某个或某几个功能,无需导入整个模块,可以直接导入指定功能,减少内存占用。

2.2.1 导入单个功能

语法:from 模块名 import 功能名

使用方式:直接使用功能名(),无需加模块名前缀

示例:从math模块中导入pow()函数(求幂)

# 只导入math模块中的pow函数
from math import pow

# 直接使用pow函数,无需加math.前缀
result = pow(2, 3)  # 2的3次方
print("2的3次方是:", result)  # 输出:2的3次方是:8.0

2.2.2 导入多个功能

语法:from 模块名 import 功能名1, 功能名2, 功能名3

示例:从datetime模块中导入date类和datetime

# 从datetime模块导入多个功能
from datetime import date, datetime

# 使用date类获取当前日期
today = date.today()
print("今天的日期:", today)  # 输出:今天的日期:2026-04-03

# 使用datetime类获取当前时间
now = datetime.now()
print("当前时间:", now)  # 输出:当前时间:2026-04-03 10:00:00(具体时间随实际情况变化)

2.2.3 导入模块中的所有功能(不推荐)

语法:from 模块名 import *

这种方式会导入模块中的所有功能,使用时无需加前缀,但存在两个问题:一是可能导入不必要的功能,占用内存;二是容易出现命名冲突(如果当前文件中的变量/函数名与模块中的功能名重复)。

示例(不推荐使用):

# 导入math模块的所有功能(不推荐)
from math import *

print(sqrt(25))  # 直接使用sqrt函数,无需加前缀,输出:5.0
print(pi)        # 直接使用pi变量,输出:3.141592653589793

2.3 导入自定义模块的注意事项

自定义模块的导入,核心是确保Python解释器能找到该模块文件,常见场景及注意事项如下:

  • 如果自定义模块与当前运行的Python文件在同一目录下,直接使用import 模块名即可导入。

  • 如果自定义模块在其他目录下,需要先将模块所在目录添加到Python的搜索路径(sys.path)中,再导入模块。

示例:导入其他目录下的自定义模块

# 导入sys模块,用于修改Python搜索路径
import sys

# 将自定义模块所在的目录添加到搜索路径中(替换为你的模块目录路径)
sys.path.append("D:/PythonProjects/modules")

# 导入自定义模块(假设模块名为my_module.py)
import my_module

# 使用自定义模块中的功能
my_module.my_function()  # 调用模块中的my_function函数

第三章:常用内置模块实战

Python内置模块(标准库)涵盖了日常开发中最常用的功能,无需额外安装,下面重点讲解几个高频使用的内置模块,结合实例说明其核心用法。

3.1 math模块(数学运算)

math模块提供了大量的数学运算函数和常数,适用于基础数学计算、科学计算等场景,核心功能如下:

功能

函数/变量

说明

示例

常数

math.pi

圆周率π(约3.14159)

print(math.pi) → 3.141592653589793

平方根

math.sqrt(x)

求x的平方根(x≥0)

math.sqrt(36) → 6.0

求幂

math.pow(x, y)

求x的y次方(返回浮点数)

math.pow(3, 2) → 9.0

三角函数

math.sin(x)、math.cos(x)

x为弧度,求正弦、余弦值

math.sin(math.pi/2) → 1.0

取整

math.ceil(x)、math.floor(x)

ceil向上取整,floor向下取整

math.ceil(2.1)→3,math.floor(2.9)→2

3.2 os模块(系统操作)

os模块用于与操作系统交互,实现文件、目录的创建、删除、查询等操作,是文件处理类项目的核心模块,核心功能如下:

3.2.1 目录相关操作

import os

# 1. 获取当前工作目录(当前Python文件运行的目录)
current_dir = os.getcwd()
print("当前工作目录:", current_dir)

# 2. 切换工作目录
os.chdir("D:/PythonProjects")  # 切换到指定目录
print("切换后的工作目录:", os.getcwd())

# 3. 创建目录(单个目录)
os.mkdir("test_dir")  # 在当前工作目录下创建test_dir目录

# 4. 创建多级目录(递归创建)
os.makedirs("a/b/c")  # 创建a目录,再在a下创建b,b下创建c

# 5. 删除目录(只能删除空目录)
os.rmdir("test_dir")  # 删除空的test_dir目录

# 6. 删除多级目录(递归删除,谨慎使用!)
os.removedirs("a/b/c")  # 依次删除c、b、a目录(需确保目录为空)

# 7. 列出目录下的所有文件和目录
file_list = os.listdir("D:/PythonProjects")
print("目录下的内容:", file_list)

3.2.2 文件相关操作

import os

# 1. 判断文件/目录是否存在
print(os.path.exists("test.txt"))  # 判断test.txt文件是否存在,返回True/False
print(os.path.exists("test_dir"))  # 判断test_dir目录是否存在

# 2. 判断是否是文件/目录
print(os.path.isfile("test.txt"))  # 判断是否是文件
print(os.path.isdir("test_dir"))   # 判断是否是目录

# 3. 获取文件/目录的绝对路径
abs_path = os.path.abspath("test.txt")
print("文件绝对路径:", abs_path)

# 4. 重命名文件/目录
os.rename("old.txt", "new.txt")  # 将old.txt重命名为new.txt

# 5. 删除文件(谨慎使用!删除后无法恢复)
os.remove("new.txt")  # 删除new.txt文件

3.3 datetime模块(时间处理)

datetime模块用于处理日期和时间,提供了日期、时间的创建、格式化、计算等功能,解决了Python原生时间处理的繁琐问题,核心功能如下:

3.3.1 获取当前日期和时间

from datetime import date, datetime, timedelta

# 1. 获取当前日期(年-月-日)
today = date.today()
print("当前日期:", today)  # 输出:2026-04-03
print("年:", today.year)   # 输出:2026
print("月:", today.month)  # 输出:4
print("日:", today.day)    # 输出:3

# 2. 获取当前时间(年-月-日 时:分:秒.微秒)
now = datetime.now()
print("当前时间:", now)  # 输出:2026-04-03 10:30:00.123456

# 3. 获取当前时间戳(从1970-01-01 00:00:00到当前时间的秒数)
timestamp = now.timestamp()
print("当前时间戳:", timestamp)

3.3.2 日期时间的格式化(重点)

使用strftime()方法将日期时间对象转换为指定格式的字符串,常用格式化符号如下:

  • %Y:4位年份(如2026)

  • %m:2位月份(如04)

  • %d:2位日期(如03)

  • %H:24小时制小时(如14)

  • %M:2位分钟(如30)

  • %S:2位秒数(如59)

from datetime import datetime

now = datetime.now()

# 格式化为:年-月-日 时:分:秒
format1 = now.strftime("%Y-%m-%d %H:%M:%S")
print("格式化时间1:", format1)  # 输出:2026-04-03 10:35:20

# 格式化为:月/日/年 小时:分钟(12小时制)
format2 = now.strftime("%m/%d/%Y %I:%M")
print("格式化时间2:", format2)  # 输出:04/03/2026 10:35

3.3.3 日期时间的计算

使用timedelta类实现日期时间的加减(如计算几天前、几天后的日期):

from datetime import date, timedelta

today = date.today()

# 1. 计算3天后的日期
three_days_later = today + timedelta(days=3)
print("3天后的日期:", three_days_later)

# 2. 计算1周前的日期
one_week_ago = today - timedelta(weeks=1)
print("1周前的日期:", one_week_ago)

# 3. 计算2小时后的时间
from datetime import datetime
now = datetime.now()
two_hours_later = now + timedelta(hours=2)
print("2小时后的时间:", two_hours_later)

3.4 sys模块(Python解释器交互)

sys模块用于与Python解释器交互,获取解释器的相关信息、控制程序的运行等,核心功能如下:

import sys

# 1. 获取Python解释器的版本信息
print("Python版本:", sys.version)

# 2. 获取Python的搜索路径(模块查找路径)
print("Python搜索路径:", sys.path)

# 3. 获取命令行参数(运行Python文件时传入的参数)
# 运行命令:python test.py arg1 arg2
print("命令行参数:", sys.argv)  # 输出:['test.py', 'arg1', 'arg2']

# 4. 退出程序(sys.exit(code),code=0表示正常退出,非0表示异常退出)
# sys.exit(0)  # 正常退出程序

第四章:自定义模块实战

当内置模块和第三方模块无法满足需求时,我们可以编写自定义模块,将项目中常用的功能封装起来,提高代码复用性和可维护性。下面通过一个完整案例,讲解自定义模块的创建、导入和使用。

4.1 自定义模块的创建

步骤:1. 新建一个.py文件,作为自定义模块;2. 在文件中编写变量、函数、类等代码;3. 保存文件(模块名尽量简洁,符合Python命名规范,避免与内置模块重名)。

示例:创建一个名为my_utils.py的自定义模块,封装常用的工具函数(字符串处理、数值计算)

# my_utils.py(自定义模块)

# 1. 定义变量
MODULE_NAME = "my_utils"
VERSION = "1.0.0"

# 2. 定义函数:判断字符串是否为空
def is_empty(s):
    """判断字符串是否为空(空格、制表符也视为空)"""
    return len(s.strip()) == 0

# 3. 定义函数:计算两个数的平均值
def average(a, b):
    """计算两个数的平均值,返回浮点数"""
    if not (isinstance(a, (int, float)) and isinstance(b, (int, float))):
        raise TypeError("输入必须是整数或浮点数")
    return (a + b) / 2

# 4. 定义类:简单的计算器类
class Calculator:
    """简单计算器类,实现加减乘除功能"""
    def add(self, a, b):
        return a + b
    
    def subtract(self, a, b):
        return a - b
    
    def multiply(self, a, b):
        return a * b
    
    def divide(self, a, b):
        if b == 0:
            raise ZeroDivisionError("除数不能为0")
        return a / b

# 模块测试代码(仅在直接运行该模块时执行,导入时不执行)
if __name__ == "__main__":
    print("测试is_empty函数:", is_empty("  "))  # 输出:True
    print("测试average函数:", average(3, 5))  # 输出:4.0
    calc = Calculator()
    print("测试加法:", calc.add(2, 3))  # 输出:5

说明:if __name__ == "__main__": 用于模块自测,当直接运行该模块时,该代码块会执行;当该模块被导入到其他文件时,该代码块不会执行,避免自测代码干扰其他文件。

4.2 自定义模块的导入与使用

假设my_utils.py与当前运行的test.py文件在同一目录下,导入并使用该模块:

# test.py(导入自定义模块)

# 1. 导入整个自定义模块
import my_utils

# 使用模块中的变量
print("模块名称:", my_utils.MODULE_NAME)
print("模块版本:", my_utils.VERSION)

# 使用模块中的函数
print("判断空字符串:", my_utils.is_empty("hello"))  # 输出:False
print("计算平均值:", my_utils.average(4, 6))        # 输出:5.0

# 使用模块中的类
calc = my_utils.Calculator()
print("减法:", calc.subtract(10, 3))  # 输出:7
print("除法:", calc.divide(8, 2))     # 输出:4.0

# 2. 导入模块中的特定功能
from my_utils import is_empty, Calculator

print("判断空字符串:", is_empty(""))  # 输出:True
calc2 = Calculator()
print("乘法:", calc2.multiply(3, 4))  # 输出:12

4.3 自定义模块的进阶:包(Package)

当自定义模块数量较多时,需要用“包(Package)”来组织模块,包是一个包含__init__.py文件的目录,目录下可以存放多个模块文件,实现模块的分层管理。

4.3.1 包的创建步骤

  1. 新建一个目录(包名,符合Python命名规范),如my_package

  2. 在该目录下新建一个__init__.py文件(空文件即可,用于标识该目录是一个Python包);

  3. 将多个自定义模块(.py文件)放入该目录下,如str_utils.py(字符串工具)、num_utils.py(数值工具)。

包的结构如下:


my_package/ ├── __init__.py ├── str_utils.py # 字符串工具模块 └── num_utils.py # 数值工具模块

4.3.2 包的导入方式

# 1. 导入包中的某个模块
from my_package import str_utils

# 使用模块中的功能
print(str_utils.is_empty("test"))  # 假设str_utils.py中有is_empty函数

# 2. 导入包中模块的特定功能
from my_package.num_utils import average

print(average(5, 7))  # 假设num_utils.py中有average函数

# 3. 给包/模块起别名
from my_package import str_utils as su

print(su.is_empty(""))  # 输出:True

第五章:第三方模块的安装与使用

第三方模块是Python生态的重要组成部分,覆盖了网络请求、数据分析、可视化、Web开发等多个领域,安装第三方模块的核心工具是pip(Python自带的包管理工具)。

5.1 pip工具的基础使用

pip的使用的通过命令行(CMD、Terminal)执行,核心命令如下:

  • 查看pip版本:pip --version

  • 安装第三方模块:pip install 模块名(如pip install requests

  • 安装指定版本的模块:pip install 模块名==版本号(如pip install requests==2.31.0

  • 升级模块:pip install --upgrade 模块名

  • 卸载模块:pip uninstall 模块名

  • 查看已安装的模块:pip list

注意:如果系统中安装了多个Python版本,需区分pip(对应默认Python)和pip3(对应Python3)。

5.2 高频第三方模块实战

5.2.1 requests模块(网络请求)

requests模块用于发送HTTP请求(GET、POST等),实现爬虫、调用API等功能,是最常用的第三方模块之一。

步骤1:安装requests模块

pip install requests

步骤2:使用requests发送GET请求(获取网页内容)

import requests

# 发送GET请求,获取百度首页内容
response = requests.get("https://www.baidu.com")

# 设置编码格式,避免中文乱码
response.encoding = "utf-8"

# 打印网页内容(HTML)
print("网页状态码:", response.status_code)  # 200表示请求成功
print("网页内容:", response.text[:500])  # 打印前500个字符

5.2.2 pandas模块(数据分析)

pandas模块用于数据处理和分析,支持读取CSV、Excel等文件,实现数据筛选、排序、统计等功能,是数据分析领域的核心工具。

步骤1:安装pandas模块(依赖numpy,会自动安装)

pip install pandas

步骤2:使用pandas读取CSV文件并简单分析

import pandas as pd

# 读取CSV文件(替换为你的CSV文件路径)
df = pd.read_csv("data.csv")

# 查看数据的前5行
print("数据前5行:")
print(df.head())

# 查看数据的基本信息(列名、数据类型、缺失值等)
print("\n数据基本信息:")
print(df.info())

# 查看数据的统计描述(均值、标准差、最大值等)
print("\n数据统计描述:")
print(df.describe())

# 筛选数据(例如筛选年龄大于18的数据)
filtered_df = df[df["age"] > 18]
print("\n年龄大于18的数据:")
print(filtered_df)

第六章:模块学习总结与拓展

6.1 核心知识点总结

  • 模块是.py文件,用于封装功能,实现代码复用和模块化;

  • 模块分为内置模块、自定义模块、第三方模块,导入方式有importfrom...import两种;

  • 常用内置模块:math(数学)、os(系统)、datetime(时间)、sys(解释器交互);

  • 自定义模块需注意文件路径,包是模块的分层管理方式,需包含__init__.py文件;

  • 第三方模块通过pip安装,核心高频模块有requests、pandas、numpy等。

6.2 学习拓展建议

  1. 深入学习内置模块:查看Python官方文档(Python标准库文档),了解更多内置模块的功能;

  2. 实战练习:结合实际需求,编写自定义模块,如日志模块、数据处理模块;

  3. 探索第三方模块:根据开发需求,学习常用第三方模块,如可视化模块matplotlib、Web框架flask等;

  4. 规范编写模块:遵循Python命名规范,给模块、函数、类添加注释,提高代码可读性和可维护性。

6.3 常见问题解决

  • 模块导入失败:检查模块文件路径是否正确,是否添加到Python搜索路径(sys.path);

  • 第三方模块安装失败:检查pip版本,更换镜像源(如阿里云、清华镜像),命令:pip install 模块名 -i https://mirrors.aliyun.com/pypi/simple/

  • 命名冲突:避免自定义模块名与内置模块、第三方模块重名,导入时使用别名区分。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐