如果你是 Python 新手,你可能会对它的所有库、包、模块和框架感到困惑。从上下文来看,你通常可以理解这些都是一些代码。但它们之间有什么区别呢?在本文中,我将用简单的术语解释 Python 模块、包、库和框架之间的区别。
现实世界中的程序非常复杂。即使是像掷骰子模拟器这样的简单游戏,如果从头开始编程,也需要大量代码。为了简化流程并提高效率,开发人员利用 模块化编程 ——一种将大型编码任务分解为更小、更易于管理的子任务的方法。这就是为什么 Python 有这么多模块、包、库和框架。
现在,让我们深入研究每个概念,以便了解它们之间的差异。
Python 模块
如果您希望代码井井有条,最好先对相关代码进行分组。
模块基本上是保存在扩展名为
.py
。您可以选择在模块中定义函数、类或变量。在模块中包含可运行代码也是可以的。
例如,让我们定义一个函数来欢迎新生参加某一课程:
def welcome_message(course):
print("Thank you for subscribing to our " + course + " course. You will get all the details in an email shortly.")
为了将此函数存储在模块 welcome 中,我们将此代码保存在名为
welcome.py
.
如果我们想在应用程序中使用此代码,我们首先需要使用 import 语句导入相应的模块。然后,我们将准备好使用此模块中定义的函数,通过使用 module.function () 语法调用该函数:
import welcome
welcome.welcome_message (âPython Basics Part 1â)
Output
Thank you for subscribing to our Python Basics Part 1 course. You will get all the details in the email shortly.
在同一个模块中定义许多不同的项目是很常见的。因此,您可能只想导入一个特定的函数,而不是整个模块。为此,您可以使用以下语法:
from welcome import welcome_message
如果您有使用 Python 的经验,那么您可能使用过模块。例如,您可能使用过:
- random 模块用于生成各种分布的伪随机数生成器。
- html 模块用于解析 HTML 页面。
- datetime 模块用于操作日期和时间数据。
- re 模块用于检测和解析 Python 中的正则表达式。
模块给你的 Python 代码带来了很多好处:
- 改进的开发流程。Python 模块可帮助您专注于任务的一小部分,而不是整个问题。这简化了开发过程,并使其不易出错。此外,模块通常以最小化相互依赖的方式编写。因此,由多名程序员组成的团队在同一个应用程序上工作更加可行。
- 您在一个模块中定义的功能可以在应用程序的不同部分使用,从而最大限度地减少重复代码。
- 单独的命名空间。 使用 Python 模块,您可以定义单独的命名空间,以避免应用程序不同部分的标识符之间发生冲突。
Python 包
开发大型应用程序时,您可能会得到许多难以管理的不同模块。在这种情况下,对模块进行分组和组织将大有裨益。这时包就派上用场了。
Python 包基本上是模块集合的目录。 包允许模块命名空间的层次结构。就像我们将硬盘上的文件组织到文件夹和子文件夹中一样,我们可以将模块组织到包和子包中。
要被视为包(或子包),目录必须包含一个名为 的文件
__init__.py
。此文件通常包含相应包的初始化代码。
例如,我们可以拥有以下
my_model
与我们的数据科学项目相关的模块的包:
我们可以使用点符号从此包中导入特定模块。例如,要从
dataset
上述包中导入模块,我们可以使用以下代码片段之一:
import my_model.training.dataset
或者
from my_model.training import dataset
接下来,我们可以选择仅从 y 模块导入函数
load_dataset()
。
dataset.p
以下任一选项都可以完成此工作:
import my_model.training.dataset.load_dataset()
或者
from my_model.training.dataset import load_dataset()
您可能已经在使用许多内置和开源 Python 包。例如:
- NumPy 是用于科学计算的基本 Python 包。
- pandas 是一个用于快速高效处理表格数据、时间序列、矩阵数据等的 Python 包。
- pytest 提供了多种模块来测试新代码,包括小型单元测试或复杂的功能测试。
随着应用程序变得越来越大并使用许多不同的模块,Python 包成为优化代码结构的关键组件。
Python 库
库是一个总称,指的是可重复使用的代码块。 通常,Python 库包含相关模块和包的集合。实际上,这个术语经常与“Python 包”互换使用,因为包也可以包含模块和其他包(子包)。然而,人们通常认为,包 是模块的集合,而 库是包的集合 .
开发人员经常创建 Python 库来与社区共享可重用的代码。为了消除从头编写代码的需要,他们创建了一组与同一领域相关的有用函数。
如今有成千上万个有用的库。我仅举几个例子:
- Matplotlib 库是 Python 中生成数据可视化的标准库。它支持构建基本的二维图形以及更复杂的动画和交互式可视化。
- PyTorch 是 Facebook 的 AI 研究实验室构建的开源深度学习库,用于在工业界和学术界实现先进的神经网络和前沿的研究思想。
- pygame 为开发人员提供了大量便捷的功能和工具,使游戏开发成为一项更直观的任务。
- Beautiful Soup 是一个非常流行的 Python 库,用于从网络获取数据。该库中的模块和包可帮助从 HTML 和 XML 文件中提取有用信息。
- Requests 是旨在简化 Python HTTP 请求的大量库的一部分。该库提供了一种直观的 JSON 方法,可帮助您避免手动将查询字符串添加到 URL。
- missingno 用于数据清理的 优秀 Python 库之一 .
顺便说一句, NumPy 和 pandas 包也经常被称为库。这是因为这些是具有广泛应用的复杂包(即分别是科学计算和数据处理)。它们还包括多个子包,因此基本上满足了 Python 库的定义。在 本文 .
Python 框架
与库类似,Python 框架是模块和包的集合,可帮助程序员加快开发过程。但是,框架通常比库更复杂。此外,虽然库包含执行特定操作的包,但 框架包含应用程序的基本流程和架构 .
如果将 应用程序开发与房屋建筑进行比较 ,Python 框架提供了所有必要的构建块,例如地基、墙壁、窗户和屋顶。然后,开发人员通过添加与房屋的警报系统、家具、电器等相当的功能,围绕此基础构建应用程序。
为了更好地理解,让我们回顾一下几个流行的框架:
- Django 是一个 Python 框架,用于以较少的代码量构建 Web 应用程序。它默认包含所有必要的功能,开发人员可以专注于他们的应用程序,而不必处理常规流程。
- Flask 是一个以轻量级和模块化设计而闻名的 Web 开发框架。它具有许多开箱即用的功能,并且可以轻松适应特定需求。
- Bottle 是另一个轻量级的 Web 开发框架,最初用于构建 API。它的独特之处在于,除了 Python 标准库 ,并且它在单个源文件中实现所有内容。
Python 框架为程序员提供了必要的基础,同时又不失灵活性,从而简化了 Web 开发流程。难怪 Netflix、Airbnb、Reddit 和 Udemy 等顶级应用程序都充分利用了 Python 框架的优势。
是时候练习你的 Python 技能了!
学习 Python 有很多 :它适合初学者,语法简单易学,当你遇到困难时,有一个很棒的社区可以为你提供帮助。如果这还不够,那就考虑一下 Python 生态系统的丰富性:想想任何随机任务,很有可能有人已经构建了一个开源模块或包来解决这个问题。
您准备好加入这个友好的社区了吗?那么我建议从我们的基础课程“ 学习使用 Python 编程” 。它包括 5 门互动课程,包含 414 个涵盖 Python 基础知识的编码挑战,其中包括:
- 函数、循环和条件语句。
- Python 列表、元组、集合 和 dictionaries .
- Python 的内置算法。
- 处理错误等等
如果您正在考虑从事 数据科学职业 ,并希望在此背景下学习 Python,那么 “数据科学 Python” 课程就是您的不二之选。该课程还包含 5 门互动课程和数百个编码挑战,因此您可以掌握使用 Python 高效处理数据所需的工具。
在 ,我们的互动课程意味着您将获得知识并立即付诸实践。您将编写真实代码并在我们的实时平台上检查它。您无需安装或设置任何东西。学习编写 Python 代码并将其应用于您自己的项目再简单不过了。那么,您准备好学习 Python 了吗?
感谢阅读,祝您学习愉快!
发表评论 取消回复