论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
云原生
›
Python总体架构介绍
Python总体架构介绍
吴旭华
金牌会员
|
2025-1-6 11:27:58
|
显示全部楼层
|
阅读模式
楼主
主题
889
|
帖子
889
|
积分
2667
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企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
吴旭华
金牌会员
这个人很懒什么都没写!
楼主热帖
mamba-ssm安装building wheel卡着不动 ...
数据库系统课程设计(高校成绩管理数据 ...
《原CSharp》第二回 巧习得元素分类 子 ...
使用TrueNas(FreeNas)进行华为手机备 ...
【云原生】第二篇--容器管理工具 Docke ...
JVM虚拟机性能监控与故障处理工具(3) ...
java中==和equals区别
Vue3-使用axios发起网络请求
【图论】—— 有向图的强连通分量 ...
Spark 总复习
标签云
挺好的
服务器
快速回复
返回顶部
返回列表