【Python学习】Python模块

张开发
2026/4/10 15:18:14 15 分钟阅读

分享文章

【Python学习】Python模块
目录前言第一章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 自定义模块的进阶包Package4.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模块主要分为三大类覆盖了开发中的大部分场景内置模块标准库Python安装完成后自带的模块无需额外安装直接导入即可使用如math、sys、os、datetime等是Python开发的基础工具。自定义模块开发者根据自身需求编写的.py文件封装项目中常用的功能供项目内部或其他项目使用。第三方模块其他开发者或组织开发的、供公众使用的模块需要通过包管理工具如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.1415926535897932.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.02.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.1415926535897932.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.14159print(math.pi) → 3.141592653589793平方根math.sqrt(x)求x的平方根x≥0math.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)→3math.floor(2.9)→23.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下创建bb下创建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()方法将日期时间对象转换为指定格式的字符串常用格式化符号如下%Y4位年份如2026%m2位月份如04%d2位日期如03%H24小时制小时如14%M2位分钟如30%S2位秒数如59from 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:353.3.3 日期时间的计算使用timedelta类实现日期时间的加减如计算几天前、几天后的日期from datetime import date, timedelta today date.today() # 1. 计算3天后的日期 three_days_later today timedelta(days3) print(3天后的日期, three_days_later) # 2. 计算1周前的日期 one_week_ago today - timedelta(weeks1) print(1周前的日期, one_week_ago) # 3. 计算2小时后的时间 from datetime import datetime now datetime.now() two_hours_later now timedelta(hours2) 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)code0表示正常退出非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)) # 输出124.3 自定义模块的进阶包Package当自定义模块数量较多时需要用“包Package”来组织模块包是一个包含__init__.py文件的目录目录下可以存放多个模块文件实现模块的分层管理。4.3.1 包的创建步骤新建一个目录包名符合Python命名规范如my_package在该目录下新建一个__init__.py文件空文件即可用于标识该目录是一个Python包将多个自定义模块.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开发等多个领域安装第三方模块的核心工具是pipPython自带的包管理工具。5.1 pip工具的基础使用pip的使用的通过命令行CMD、Terminal执行核心命令如下查看pip版本pip --version安装第三方模块pip install 模块名如pip install requests安装指定版本的模块pip install 模块名版本号如pip install requests2.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文件用于封装功能实现代码复用和模块化模块分为内置模块、自定义模块、第三方模块导入方式有import和from...import两种常用内置模块math数学、os系统、datetime时间、sys解释器交互自定义模块需注意文件路径包是模块的分层管理方式需包含__init__.py文件第三方模块通过pip安装核心高频模块有requests、pandas、numpy等。6.2 学习拓展建议深入学习内置模块查看Python官方文档Python标准库文档了解更多内置模块的功能实战练习结合实际需求编写自定义模块如日志模块、数据处理模块探索第三方模块根据开发需求学习常用第三方模块如可视化模块matplotlib、Web框架flask等规范编写模块遵循Python命名规范给模块、函数、类添加注释提高代码可读性和可维护性。6.3 常见问题解决模块导入失败检查模块文件路径是否正确是否添加到Python搜索路径sys.path第三方模块安装失败检查pip版本更换镜像源如阿里云、清华镜像命令pip install 模块名 -i https://mirrors.aliyun.com/pypi/simple/命名冲突避免自定义模块名与内置模块、第三方模块重名导入时使用别名区分。

更多文章