首页 > 编程语言 >Python总体架构、Python对象

Python总体架构、Python对象

时间:2022-09-28 22:37:15浏览次数:49  
标签:总体 解释器 架构 包含 Python 对象 源码 目录

Python总体架构

Python的整体架构主要分为3个部分:
1.左边是Python提供的大量模块、库以及用户自定义的模块。
2.右边是Python的运行时环境,包括对象/类型系统、内存分配器和运行时状态信息
3.中间部分是Python的核心——解释器(interpreter),或者称为虚拟机。在解释器中箭头的方向指示了Python运行过程中的数据流方向。其中,Scanner对应词法分析——将文件输入的Python源码或从命令行输入的Python源码切分为一个个token;Parser对应语法分析——在Scanner的分析结果上进行语法分析,建立抽象语法树(AST);Compiler根据建立的AST生成指令集合——Python字节码(Bytecode),就像Java编译器和C#编译器所做的那样;Code Evaluator执行这些字节码,因此又被称为虚拟机。
4.解释器与右边的对象/类型系统、内存分配器之间的箭头表示使用关系;而与运行时状态之间的箭头表示修改关系,即Python在执行的过程中会不断的修改当前解释器所处的状态,在不同的状态之间切换。

Python源码组织

1.Include目录:包含Python提供的所有头文件。
2.Lib目录:包含Python自带的所有标准库,且都是用Python语言编写的。
3.Modules目录:包含所有用C语言编写的模块,比如math、hashlib等。
4.Parser目录:包含Python解释器中的Scanner和Parser部分,即对Python源码进行词法分析和语法分析的部分。
5.Objects目录:包含所有Python的内置对象,包括整数、list、dict等。同时,该目录还包括Python在运行时需要的所有内部使用对象的实现。
6.Python目录:包含Python解释器中的编译(Compiler)和执行引擎部分,是Python运行的核心所在。
7.PCbuild目录:包含Visual Studio 2003的工程文件,对于Python源码的研究就从这里开始。
8.Programs目录:包含Python二进制可执行文件的源码。

Python对象

1.对象是Python最核心的一个概念。在Python的世界,一切都是对象。面向对象理论中的类和对象在Python中都是通过Python内的对象来实现的。
2.在Python中,对象是为C中的结构体在堆上申请的一块内存。
3.在Python中,对象一旦被创建,它在内存中的大小就是不变的。
# 对象的分类
Python的对象从概念上大致分为5类。注意:(主要是提供一种看待Python中对象的视角而已)
-Fundamental对象:类型对象。
-Numeric对象:数值对象。
-Sequence对象:容纳其它对象的序列集合对象。
-Mapping对象:类似于C++中map的关联对象。
-Internal对象:Python虚拟机在运行时内部使用的对象。
# 对象机制的基石——PyObject
Python的对象机制是基于PyObject拓展开来的。
   在Python中,对象机制的核心其实非常简单,一个是引用计数,一个是类型信息。
   PyObject中定义了每一个Python对象都必须有的内容,这些内容将出现在每一个Python对象所占用内存的最开始的字节中。
# 类型对象
PyTypeObject的定义中包含许多信息,主要分为一下几类:
1.类型名tp_name,主要用于Python内部调试。
2.创建该类型对象时分配的空间大小信息,即tp_basicsize和tp_itemsize。
3.与该类型对象相关的操作信息,如tp_print这样的函数指针。
4.一些对象属性。

标签:总体,解释器,架构,包含,Python,对象,源码,目录
From: https://www.cnblogs.com/ldb-1997/p/16739802.html

相关文章

  • Python psutil cpu_percent调用说明
    psutil获取系统cpu使用率的方法是cpu_percent(),其有两个参数,分别是interval和percpu,interval指定的是计算cpu使用率的时间间隔,percpu则指定是选择总的使用率还是每个cpu的......
  • Python 字符串前面加u,r,b的含义
    1、字符串前加ustr=u'中文字符串'作用:解决中文乱码问题后面字符串以Unicode格式进行编码,一般用在中文字符串前面2、字符串前加rs=r'\tt'print(s)\tts='\tt'print(s)t在......
  • Python之telnetlib模块
    telnetlib是python标准库中的一员,我们可以使用该模块以telnet的方式与服务器交互。请观察下面示例了解它的用法:importtelnetlibdefrun_telnet(host,username,password,......
  • python“\n” “\t”
    “\n”换行符“\t”tab缩进符print("打印后,默认为换行,不想换行用end",end="")输出内容后加个空格,不换行。......
  • Python字符串格式化%s%d%f详解
    %s字符串string="hello"#%s打印时结果是helloprint"string=%s"%string#output:string=hello#%2s意思是字符串长度为2,当原字符串的长度超过2时,按原长度打......
  • python pip install指定国内源镜像
    有时候安装一些依赖包,网不好,直接超时,或者这个包就是死都下不下来的时候,可以指定国内源镜像。pipinstall-i国内镜像地址包名e.g.pipinstall-i  http://mirr......
  • 【Python】【爬虫】【问题解决方案记录】调试输出存在数据,print在控制台确丢失数据
    如下图,调试可以看到数据是完整的但是print输出的,恰好丢失了中间的一大堆数据。对,下图打问号的地方应该是小说才对。看代码可能看不出缺失内容,可视化看看对吧,......
  • 基于python的药物管理系统设计与实现-计算机毕业设计源码+LW文档
    开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:PyCharm 浏览器:谷歌浏览器数据库:DROPTABLEIFEXISTS......
  • 基于python的疫情防控下医院人员调动系统设计与实现-计算机毕业设计源码+LW文档
    摘要随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各......
  • Python入门基础
    今日内容总结while循环的补充说明流程控制之for循环while循环什么是循环,循环就是想要让一些代码反复执行while条件:条件成立后所执行的循环体代码 1.先判断条......