站点图标 AI技术聚合

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

系列文章目录

个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页
Python入门专栏:《Python入门》欢迎阅读,一起进步!🌟🌟🌟
码字不易,如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!😊😊😊

文章目录

  • 系列文章目录
  • 导语
  • 模块概述
  • 自定义模块
    • 创建模块
  • 引用模块
    • 使用 import 语句
    • 导入特定功能
    • 为模块或功能取别名
    • 模块搜索目录
  • 引用标准模块
  • 下载与安装第三方模块
    • 使用pip
  • 以主程序的形式执行
  • Python中的包
    • 创建包
    • 使用包
  • 结语

导语

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

模块概述

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

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

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

自定义模块

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

创建模块

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

引用模块

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

使用 import 语句

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

import math

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

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

导入特定功能

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

from math import sqrt

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

为模块或功能取别名

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

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 变量中。可以通过以下代码输出具体的目录:

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

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

引用标准模块

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

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

下载与安装第三方模块

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

模块名功能示例用途
requests发送 HTTP 请求,进行网络通信网络数据爬取、API调用
pandas数据处理和分析,提供 DataFrame 和 Series 数据结构数据清洗、数据分析、数据可视化
numpy科学计算和数值运算,提供多维数组和矩阵操作数值计算、线性代数运算
matplotlib绘制图表和可视化工具数据可视化、图表绘制
scipy科学计算工具集,提供数学、科学和工程计算数值计算、数据拟合、信号处理
beautifulsoup4解析 HTML 和 XML 文档,提取网页数据网页爬虫、网页数据提取
scrapy强大的网络爬虫框架大规模数据爬取、数据抓取
djangoWeb 应用开发框架构建Web应用、网站开发
flask轻量级 Web 应用开发框架快速构建Web应用、API服务
sqlalchemySQL 数据库的 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 中输入以下命令:

help('modules')

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

pip list

以主程序的形式执行

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

# 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 的包,它的目录结构如下:

my_package/
    __init__.py
    module1.py
    module2.py
    subpackage/
        __init__.py
        module3.py

使用包

创建包以后,就可以在包中创建相应的模块,然后再使用import语句从包中加载模块。从包中加
载模块通常有以下3种方式:

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

结语

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

文章出处登录后可见!

已经登录?立即刷新
退出移动版