Python零基础入门(十)——模块与包

系列文章目录

个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页

Python入门专栏:《Python入门》欢迎阅读,一起进步!🌟🌟🌟

码字不易,如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!😊😊😊


文章目录

导语

欢迎来到本系列的第十篇文章!在前面的学习中,已经介绍了 Python 的基本语法、条件和循环语句、函数、以及面向对象编程等知识。今天,我们将继续扩展 Python 技能,学习有关模块与包的内容。模块与包是 Python 中非常重要的概念,它们能够帮助组织和管理代码,提高代码的复用性和可维护性。

模块概述

Python 提供了强大的模块支持,主要体现为不仅在 Python 标准库中包含了大量的模块(称为标准模块 ),如 mathrandomdatetime 等,而且还有很多第三方模块 ,另外开发者自己也可以开发自定义模块

模块的英文是 Modules,可以认为是一盒主题积木,通过它可以拼出某一主题的东西。这与函数不同,一个函数相当于一块积木,而一个模块中可以包括很多函数,也就是很多积木,所以也可以说模块相当于一盒积木。

在 Python 中,一个扩展名为 "py" 的文件就称之为一个模块。通常情况下,把能够实现某一特定功能的代码放置在一个文件中作为一个模块,从而方便其他程序和脚本导入并使用。另外,使用模块也可以避免函数名和变量名冲突。

自定义模块

除了使用 Python 内置的模块外,也可以自己创建和使用自定义模块。自定义模块可以将一组相关的功能放在一个文件中,并在其他程序中进行引用。

创建模块

创建模块可以将模块中相关的代码(变量定义和函数定义等)编写在一个单独的文件中,并且将该文件命名为 "模块名+.py" 的形式,也就是说,创建模块,实际就是创建一个 .py 文件。

引用模块

Python 提供了多种方式来引用模块:

使用 import 语句

使用 import 语句可以导入整个模块,并使用模块中定义的功能。

python 复制代码
import math

result = math.sqrt(25)
print(result)  # 输出 5.0

注意:使用 import 语句导入模块时,模块名是区分字母大小写的。

导入特定功能

如果只需要使用模块中的某个功能,可以使用 from ... import ... 语句。

python 复制代码
from math import sqrt

result = sqrt(25)
print(result)  # 输出 5.0

为模块或功能取别名

在导入模块时,也可以为其取一个别名,方便使用。

python 复制代码
import math as m
from math import sqrt as square_root

result = m.sqrt(25)
print(result)  # 输出 5.0

result2 = square_root(36)
print(result2)  # 输出 6.0

模块搜索目录

当使用 import 语句导入模块时,默认情况下,会按照以下顺序进行查找:

  • 1.内置模块:首先搜索内置的模块,例如 mathsys 等。
  • 2.当前工作目录:如果模块与当前脚本文件(或交互式会话)在同一目录下, 那么 Python 会优先从当前工作目录进行搜索。
  • 3.PYTHONPATH 路径:Python 会按照 PYTHONPATH 环境变量中声明的路径顺序逐个搜索。
  • 4.标准库路径:如果模块仍然未找到,则 Python 会搜索标准库的安装路径。
  • 5.错误:如果在以上步骤都找不到模块,则会抛出 ModuleNotFoundError 异常。

以上各个目录的具体位置保存在标准模块 syssys.path 变量中。可以通过以下代码输出具体的目录:

python 复制代码
import sys				# 导入标准模块 sys
print(sys.path)			# 输出具体目录

执行上面的代码,将显示下图所示的结果。

引用标准模块

Python 内置了大约 200 多个标准模块,它们提供了丰富的功能和工具。下面是一个常用的 Python 标准模块及其功能:

模块名 功能 示例用途
math 数学运算函数,如三角函数、指数对数、常量 π 等 计算三角函数值、计算数学表达式
random 生成随机数,如随机整数、随机选择、洗牌等 随机数游戏、随机抽取样本数据
datetime 处理日期和时间,如获取当前日期时间、格式化日期时间等 日期时间处理、时间戳转换
os 操作系统接口,如文件和目录操作、环境变量、进程管理等 文件操作、目录遍历、环境变量读取
sys 提供对解释器的访问,如命令行参数、标准输入输出等 命令行参数解析、标准输入输出重定向
re 正则表达式操作,用于字符串匹配和替换 文本处理、数据提取
json JSON 数据编码和解码 与其他系统交互、配置文件存储
csv CSV 文件读写 数据处理、数据导入导出
urllib URL 处理和访问网络资源 网络请求、网页爬虫
sqlite3 SQLite 数据库操作 数据存储、小型数据库应用
collections 扩展的容器数据类型,如dequeCounterdefaultdict 数据分析、数据处理
itertools 提供用于高效循环的迭代器工具 迭代操作、组合生成器
argparse 命令行参数解析 命令行工具、脚本参数配置
logging 记录日志信息 应用日志、调试信息输出
multiprocessing 多进程编程,支持多进程和进程间通信 并行处理、分布式计算

下载与安装第三方模块

除了 Python 内置的标准模块外,还有许多由 Python 社区贡献的第三方模块,可以为项目提供更多功能和特性。下面是常用的 Python 第三方模块及其功能:

模块名 功能 示例用途
requests 发送 HTTP 请求,进行网络通信 网络数据爬取、API调用
pandas 数据处理和分析,提供 DataFrame 和 Series 数据结构 数据清洗、数据分析、数据可视化
numpy 科学计算和数值运算,提供多维数组和矩阵操作 数值计算、线性代数运算
matplotlib 绘制图表和可视化工具 数据可视化、图表绘制
scipy 科学计算工具集,提供数学、科学和工程计算 数值计算、数据拟合、信号处理
beautifulsoup4 解析 HTML 和 XML 文档,提取网页数据 网页爬虫、网页数据提取
scrapy 强大的网络爬虫框架 大规模数据爬取、数据抓取
django Web 应用开发框架 构建Web应用、网站开发
flask 轻量级 Web 应用开发框架 快速构建Web应用、API服务
sqlalchemy SQL 数据库的 ORM(对象关系映射)框架 数据库操作、数据持久化
tensorflow 深度学习框架 机器学习、神经网络模型训练
pytorch 深度学习框架,提供动态计算图 机器学习、神经网络模型训练
keras 高级神经网络 API,基于 TensorFlow 或 Theano 快速构建和训练神经网络模型
nltk 自然语言处理工具集 文本处理、语言分析
opencv-python 计算机视觉库,用于图像和视频处理 图像处理、计算机视觉应用
selenium 浏览器自动化测试工具 网页自动化操作、Web 测试

要使用这些第三方模块,需要先下载并安装它们。

使用pip

pip 是Python的包管理器,可以用来下载和安装第三方模块。打开命令行终端,使用以下命令来安装一个名为 requests 的第三方模块:

pip install requests

这将从 Python 官方的 PyPI(Python Package Index)仓库中下载并安装 requests 模块。

由于 Python 官方的 PyPI 仓库位于国外,如果网络连接到 PyPI 缓慢,可以通过以下使用国内镜像源来快速下载:

国内有一些镜像源提供了 Python 第三方模块的镜像,可以加快下载速度。例如,清华大学提供了 PyPI 的镜像源。在终端中使用以下命令来更换为清华大学的 PyPI 镜像源:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

安装完成后,就可以在代码中导入并使用这个模块了。

如果想要查看 Python 中都有哪些模块(包括标准模块和第三方模块),可以在 IDLE 中输入以下命令:

python 复制代码
help('modules')

如果只是想要查看已经安装的第三方模块,可以在命令行窗口中输入以下命令:

pip list

以主程序的形式执行

在 Python 中,可以将一个文件既作为模块引用,又可以作为独立的程序执行。这可以通过 if __name__ == "__main__": 来实现。

python 复制代码
# my_module.py

def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

if __name__ == "__main__":
    result1 = add(5, 3)
    print(result1)  # 输出 8

    result2 = subtract(10, 4)
    print(result2)  # 输出 6

当直接运行 my_module.py 时,if __name__ == "__main__": 块中的代码将会执行;而当这个文件作为模块被引用时,if __name__ == "__main__": 块中的代码将不会执行。

这是因为当 Python 解释器执行一个文件时,它会将特殊的变量 __name__ 设置为一个特定的值。如果一个文件是作为独立程序执行,那么 __name__ 的值将被设置为 "__main__";如果一个文件是被导入为模块使用,那么 __name__ 的值将是模块的名称。

Python中的包

包是一种包含模块的文件夹,它允许将相关的模块组织在一起。包含一个特殊的文件 __init__.py(可以是空文件)来表示这个文件夹是一个包。使用包的好处是更好地组织和管理模块,避免模块名称冲突,并且使代码结构更清晰。

创建包的目的不是为了运行,而是被导入使用,包只是模块的一种形式而已。

创建包

创建包实际上就是创建一一个文件夹,并且在该文件夹中创建一个名称为 __init__.py 的 Python 文件。在 __init__.py 文件中,可以不编写任何代码,也可以编写一些 Python 代码。在 __init__.py 文件中所编写的代码,在导入包时会自动执行。

例如,创建一个名为 my_package 的包,它的目录结构如下:

markdown 复制代码
my_package/
    __init__.py
    module1.py
    module2.py
    subpackage/
        __init__.py
        module3.py

使用包

创建包以后,就可以在包中创建相应的模块,然后再使用import语句从包中加载模块。从包中加

载模块通常有以下3种方式:

  • 通过 "import +完整包名.模块名" 形式加载指定模块;
  • 通过 "from + 完整包名+ import + 模块名" 形式加载指定模块
  • 通过 "from + 完整包名.模块名 + import + 定义名" 形式加载指定模块

结语

本篇博客,介绍了 Python 中模块与包的概念、自定义模块、导入模块、以及以主程序形式执行代码。模块与包是 Python 中组织代码、实现复用性和可维护性的重要工具,希望你能在今后的编程中善于运用它们。感谢阅读,祝你编程愉快!

相关推荐
一个不正经的林Sir2 分钟前
C#WPF基础介绍/第一个WPF程序
开发语言·c#·wpf
API快乐传递者7 分钟前
Python爬虫获取淘宝详情接口详细解析
开发语言·爬虫·python
公众号Codewar原创作者9 分钟前
R数据分析:工具变量回归的做法和解释,实例解析
开发语言·人工智能·python
赵钰老师12 分钟前
基于R语言APSIM模型应用及批量模拟(精细农业、水肥管理、气候变化、粮食安全、土壤碳周转、环境影响、农业可持续性、农业生态等)
开发语言·数据分析·r语言
FL162386312914 分钟前
python版本的Selenium的下载及chrome环境搭建和简单使用
chrome·python·selenium
巫师不要去魔法部乱说17 分钟前
PyCharm专项训练5 最短路径算法
python·算法·pycharm
Chloe.Zz24 分钟前
Python基础知识回顾
python
IT古董24 分钟前
【漫话机器学习系列】020.正则化强度的倒数C(Inverse of regularization strength)
人工智能·机器学习
进击的小小学生27 分钟前
机器学习连载
人工智能·机器学习
lly20240628 分钟前
Highcharts 饼图:数据可视化利器
开发语言