ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Python总体架构介绍
[打印本页]
作者:
吴旭华
时间:
2025-1-6 11:27
标题:
Python总体架构介绍
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 又可以被称为虚拟机。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4