- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Python源码剖析 ------Robert Chen (search.pythoner@) 目 录 Python源码剖析 1 目 录 I 1 编译Python 1 1.1 Python总体架构 1 1.2 Python源代码的组织 2 1.3编译Python 3 2 对象机制 6 2.1 对象 6 2.2 类型对象 9 2.3 对象间的继承和多态 12 2.4 引用计数 13 2.5 Python对象的分类 15 2.6 通向Python之路 16 3 整数对象 17 3.1 PyIntObject 17 3.2 PyIntObject对象的创建和维护 23 3.2.1 对象创建的三种途径 23 3.2.2 小整数对象 24 3.2.3 大整数对象 25 3.2.4 添加和删除 26 3.2.5 小整数对象池的初始化 32 3.3 Hack PyIntObject 33 4 字符串对象 37 4.1 PyStringObject与PyString_Type 37 4.2 创建PyStringObject对象 40 4.3 Intern机制 44 4.4 字符缓冲池 50 4.5 PyStringObject效率相关问题 53 4.6 Hack PyStringObject 56 5 PyListObject对象 59 5.1 PyListObject对象 59 5.2 PyListObject的创建与维护 61 5.2.1 创建 61 5.2.2 添加 64 5.2.3 删除 69 5.3 PyListObject对象缓冲池 72 5.4 Hack PyListObject 73 6 字典对象PyDictObject 75 6.1 散列表概述 75 6.2 PyDictObject 77 6.3 PyDictObject的创建和维护 80 6.3.1 PyDictObject对象创建 80 6.3.2 元素有哪些信誉好的足球投注网站 82 6.3.3 插入与删除 90 6.4 PyDictObject对象缓冲池 100 6.5 Hack PyDictObject 102 7 最简单的Python实现:Small Python 107 7.1 Small Python 107 7.2 对象机制 107 7.3 解释过程 116 7.4 交互式环境 119 8 Pyc文件解析 125 8.1 PyCodeObject与Pyc文件 125 8.2 Pyc文件的生成 129 8.3 一个PyCodeObject,多个PyCodeObject? 137 8.4 Python字节码 137 编译Python Python总体架构 在最高的层次上,Python的整体架构可以分为四个主要的部分,整个架构如图1所示。在左边,是Python提供的大量的模块,库以及用户自定义的模块。比如在执行import os时,这个os就是Python内建的模块,当然用户还可以通过自定义模块来扩展Python系统。在本系列文章中,我们不会对这一部分进行过多的考察。 ??? 在图的右边,是Python的运行时环境,包括对象/类型系统(Object/Type structures),内存分配器(Memory Allocator)和运行时状态(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又可以被称为执行引擎。 ??? 图中,在Interpreter与右边的对象/类型系统,内存分配器之间的箭头表示“使用”关系;而与运行时状态之间的箭头表示修改关系,即Python在执行的过程中会不断地修改当前解释器所处的状态,在不同的状态之间切换。 ??? Python源代码的
您可能关注的文档
最近下载
- 层析包括吸附层析分配层析离子交换层析亲和层析等 (2).pptx VIP
- 2019主持人大赛总决赛第三轮巅峰对决王嘉宁VS邹韵演讲稿.doc VIP
- 《房屋建筑学》第6章 建筑构造概论.ppt VIP
- 2025年河北省涿州三中学初三九月月考物理试题含解析.doc VIP
- 超星尔雅学习通《通识写作怎样进行学术表达(复旦大学)》章节测试答案.docx VIP
- C++龟兔赛跑代码.docx VIP
- 人教新版英语九年级Unit1-4试卷.doc VIP
- C++书写日历代码.docx VIP
- 食品仓储安全保障措施.docx VIP
- 辽宁省抚顺市新抚区2024-2025学年八年级上学期10月月考语文试题.docx VIP
文档评论(0)