首页 > Python资料 博客日记
Python总体架构介绍
2025-01-14 04:00:07Python资料围观24次
Python的整体架构主要分为3个部分:
我们分别来说一说。
第一部分File Groups。
左边是Python提供的核心模块(Core Modules)、库(Library)和用户自定义模块(User-defined Modules)。
Core Modules——核心模块:
是指那些与Python解释器紧密集成的模块,它们提供了Python语言的基础功能。这些模块是Python标准库的一部分,通常不需要额外安装,并且可以在任何Python程序中直接导入使用。
我们来看一看主要有哪些核心模块:
sys:提供了访问Python解释器和它的环境的方法,包括与解释器强烈交互的函数和变量。
os:提供了与操作系统交互的功能,如文件和目录管理、执行系统命令、处理文件路径等。
io:支持对二进制数据和文本数据的输入/输出操作,提供了文件读写、内存文件读写等功能。
time:提供了各种与时间相关的函数,如获取当前时间、测量时间间隔、延迟执行等。
math:包含了一些基本的数学运算函数,如三角函数、指数和对数函数、幂函数等。
datetime:提供了日期和时间的操作,包括日期、时间、时区、差值和周期等。
json:用于解析JSON格式的数据,支持将Python对象编码成JSON字符串,以及将JSON字符串解码成Python对象。
csv:用于读写CSV文件,提供了处理逗号分隔值数据的工具。
re:提供了正则表达式的支持,用于字符串的搜索、替换、匹配和分割等操作。
collections:提供了一些额外的容器类型,如dict
、list
、set
和tuple
之外的Counter
、OrderedDict
、defaultdict
等。
heapq:提供了一个基于堆队列算法的最小值堆的实现,用于管理优先队列。
itertools:提供了创建迭代器的工具,用于生成复杂的迭代器组合。
operator:提供了访问Python操作符的函数,如算术运算符、比较运算符、逻辑运算符等。
functools:提供了一些高阶函数和函数操作,如reduce
、partial
、lru_cache
等。
threading:提供了线程相关的操作,允许程序中并发执行多个线程。
multiprocessing:提供了跨平台的进程基并发性,允许程序创建多个进程。
这些核心模块是Python编程的基础,它们为Python程序员提供了强大的工具集,以支持各种编程任务和应用场景。由于它们是Python标准库的一部分,因此不需要额外安装,可以直接在任何Python程序中导入使用。
Library——库:
库通常指的是一组预先构建的代码,这些代码被组织成可以重复使用的模块,以执行常见的任务。库可以是Python标准库的一部分,也可以是第三方库。
以下是一些Python中常见的库,它们不属于核心模块,但也非常常用:
NumPy:用于数值计算的库,提供了强大的多维数组对象和大量的数学函数。
Pandas:提供了数据结构和数据分析工具,非常适合处理表格数据。
SciPy:基于NumPy,提供了科学计算中常用的工具和算法,如线性代数、数值积分、优化和信号处理。
Matplotlib:用于创建静态、交互式和动画可视化的库。
Seaborn:基于Matplotlib,提供了更高级的可视化功能,用于绘制统计图形。
TensorFlow:由Google开发的开源机器学习库,用于数据流图的数值计算。
Keras:一个高层神经网络API,可以运行在TensorFlow、CNTK或Theano之上。
PyTorch:由Facebook开发的开源机器学习库,广泛用于计算机视觉和自然语言处理。
Scikit-learn:提供了简单的高效机器学习算法,如分类、回归、聚类和降维。
Django:一个高级的Web框架,鼓励快速开发和干净、实用的设计。
Flask:一个轻量级的Web应用框架,适合小型项目和微服务。
Requests:用于发送HTTP请求的库,简化了与Web服务的交互。
Beautiful Soup:用于解析HTML和XML文档的库,常用于Web抓取。
SQLAlchemy:一个SQL工具包和对象关系映射(ORM)库,用于与数据库进行交互。
Celery:一个异步任务队列/作业队列,基于分布式消息传递。
APScheduler:用于在Python应用程序中进行任务调度的库。
Pygame:用于创建视频游戏的库,提供了图形和声音库。
Tkinter:Python的标准GUI(图形用户界面)库。
PyQt 或 PySide:提供了Qt应用程序框架的Python绑定,用于创建跨平台的桌面应用程序。
asyncio:用于编写单线程并发代码,使用异步I/O、事件循环、协程和任务。
这些库通常需要使用包管理工具(如pip)进行安装,它们扩展了Python的功能,使得开发者可以更容易地构建复杂的应用程序。第三方库的数量和种类非常庞大,可以根据项目需求选择合适的库来使用。
User-defined Modules——用户自定义模块:
是指Python程序员根据特定需求创建的模块。这些模块可以包含函数、类、变量以及其他Python代码,它们被组织在.py文件中,并且可以像Python标准库或第三方库中的模块一样被导入和使用。用户定义模块使得代码更加模块化、可重用和易于维护。
创建用户定义模块的步骤:
-
规划模块结构:确定模块将包含哪些功能,并规划好函数和类的组织结构。
-
编写代码:在.py文件中编写模块代码。每个文件都可以作为一个模块。
-
组织为包:如果模块较多,可以组织成包(package)。包是包含多个模块的目录,通常包含一个
__init__.py
文件。 -
导入和使用:在需要使用模块的Python脚本或程序中,使用
import
语句导入模块。
右边是Python的运行时环境(Runtime Environment),是指在程序执行时,提供必要的资源、服务和条件的环境。包括对象/类型系统(Object/Type Structures)、内存分配器(Memory Allocator)、运行时状态信息(Current State of Python)。
Object/Type Structures——对象/类型系统:
在Python中,对象和类型结构是核心概念,它们构成了语言的面向对象编程(OOP)基础。以下是Python中对象和类型结构的关键组成部分:
1. 对象(Objects):
- 在Python中,对象是内存中的一个存储实体,它可以是变量、函数、类、模块等。
- 对象可以包含数据(属性)和代码(方法)。
- 所有对象都是某个类的实例。
2. 类(Classes):
- 类是创建对象的蓝图或模板,它定义了一组属性和方法。
- 类可以包含初始化方法(`__init__`),这是一个特殊的方法,用于在创建新实例时设置对象的初始状态。
3. 类型(Types):
- 类型是对象的分类,定义了对象可以执行的操作。
- Python中的内置类型包括`int`、`float`、`str`、`list`、`dict`等。
- 用户可以通过定义类来创建自定义类型。
4. 实例(Instances):
- 实例是类的具体对象,通过类创建。
- 实例化是创建类的新对象的过程。
5. 属性(Attributes):
- 属性是对象的状态,即对象的变量。
- 属性可以存储在对象中,并且可以被对象的方法访问和修改。
6. 方法(Methods):
- 方法是对象的行为,即对象可以执行的函数。
- 方法通常接受参数,并可以访问和修改对象的属性。
7. 继承(Inheritance):
- 继承是Python中代码复用的一种方式,允许一个类(子类)继承另一个类(父类)的属性和方法。
- 子类可以扩展或修改父类的行为。
8. 多态(Polymorphism):
- 多态是指对象可以有多种形式,允许不同类的对象对同一消息做出不同的响应。
- 在Python中,多态通常是通过方法重载和覆盖实现的。
9. 封装(Encapsulation):
- 封装是将数据(属性)和操作数据的代码(方法)捆绑在一起的原则。
- 在Python中,封装通常通过类来实现,使用私有属性(以双下划线开头)和公共方法来控制对属性的访问。
10. 元类(Metaclasses):
- 元类是类的类,它定义了其他类的行为。
- 元类在Python中是一个高级特性,通常用于框架和库的开发。
11. 特殊方法(Magic Methods):
- 特殊方法是Python中以双下划线(如`__init__`、`__str__`、`__len__`等)包围的方法。
- 这些方法允许开发者定义或修改类的默认行为。
12. 模块(Modules):
- 模块是包含Python定义和声明的文件。
- 模块可以定义函数、类和变量,也可以包含可执行的代码。
13. 包(Packages):
- 包是模块的集合,它们组织了多个模块和子包。
- 包通常用于大型项目,以组织相关的模块。
这些概念共同构成了Python中的对象和类型结构,它们是理解和使用Python进行面向对象编程的基础。通过这些结构,Python能够提供强大的数据抽象和代码复用机制。
Memory Allocator——内存分配器:
在Python中,`MemoryAllocator` 并不是一个直接暴露给用户或在标准库中明确定义的组件。然而,它的概念与内存分配和管理密切相关。在编程语言的底层,内存分配器是负责管理内存分配和释放的系统组件。以下是一些与Python内存分配相关的要点:
1. 内存管理:
- Python使用引用计数来跟踪每个对象的引用数量。当一个对象的引用计数降至零时,它将被垃圾回收。
2. 垃圾回收:
- Python的垃圾回收机制主要依赖于引用计数,但也包括一个循环检测器来处理循环引用的问题。这个循环检测器是一个世代垃圾收集器,它可以识别并清理循环引用的对象。
3. 内存分配:
- Python对象通常在堆上分配。Python解释器(特别是CPython)使用特殊的内存分配器来管理对象的内存分配,以提高效率和减少内存碎片。
4. 对象模型:
- Python的所有对象都是通过堆分配的,包括整数、浮点数、字符串、列表、字典等。这些对象在Python中有统一的内存布局。
5. 内存池:
- 为了避免频繁地与操作系统交互,Python使用内存池(memory pool)来分配小块内存。这在分配和释放大量小对象时尤其有用。
6. `PyMem_Allocator`:
- 在CPython的源代码中,`PyMem_Allocator` 是一个结构体,它定义了一套内存分配和释放的函数。这允许Python解释器使用不同的内存分配策略。
7. `malloc` 和 `free`:
- 在C语言中,`malloc` 和 `free` 是标准库函数,用于动态内存分配和释放。CPython在内部使用这些函数(或其他类似的函数)来管理内存。
8. `gc` 模块:
- Python的 `gc` 模块提供了垃圾回收相关的函数,允许用户与Python的垃圾回收器交互,例如触发垃圾回收、获取对象的引用计数等。
9. 内存分析和调试:
- Python提供了一些工具和模块,如 `tracemalloc` 和 `objgraph`,用于分析内存使用情况和调试内存泄漏问题。
10. 第三方内存管理库:
- 除了Python自带的内存管理功能,还有一些第三方库提供了额外的内存管理工具,如 `jemalloc`,它是一个高性能的内存分配器,可以作为Python的内存管理后端。
在Python中,大多数内存管理的细节对用户来说是透明的,因为Python的设计哲学是简化编程。然而,了解内存分配器的概念和Python的内存管理机制对于编写高效、内存使用的程序是非常有帮助的。
Current State of Python——运行时状态信息:
运行时状态维护了解释器在执行字节码时不同状态(比如,正常状态和异常状态)之间切换的动作,我们可以将它视为一个巨大而复杂的有穷状态机。内存分配器则全权负责Python中创建对象、内存的申请工作。实际上,它就是Python运行时与C中malloc的一层接口。而对象/类型系统则包含Python 中存在的各种内置对象,比如整数、list和dict,以及各种用户自定义的类型和对象。
中间就是 Python 的核心--解释器(interpreter),或者称为虚拟机。在解析器中,箭头的方向指示了 Python 运行过程中的数据流方向。其中 Scanner 对应词法分析,将文件输入的 Python 源代码或从命令行输入的一行行 Python 代码切分为一个的 token; Parser 对应语法分析,在Scanner 的分析结果上进行语法分析,建立抽象语法树(AST);Compiler 是根据建立的 AST 生成指令集合 -- Python 字节码(byte code),就像 Java 编译器和 C#编译器做的那样;最后由 Code Evaluator 来执行这些字节码。因此 Code Evaluator 又可以被称为虚拟机。
标签:
相关文章
最新发布
- 【实战】Python+OpenCV车道线检测识别项目:实现L2级别自动驾驶必备(配套课程+平台实践)
- 深入了解 AWT 中的 Menu(菜单)组件
- 大数据-215 数据挖掘 机器学习理论 - KMeans Python 实现 算法验证 sklearn cluster.cluster_centers_ inertia_
- python视频格式转换时,报错:ModuleNotFoundError: No module named ‘moviepy.editor‘
- python谷歌浏览器dino游戏,完整开源代码
- Python 给 Excel 写入数据的四种方法
- 【Python】成功解决AttributeError: ‘list‘ object has no attribute ‘split‘
- 豆包 API 调用示例代码详解-Python版
- 【python GUI】使用python开发一个随机点名系统(包含代码解释)
- python 实现square root平方根算法
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程