学习《Python源码剖析-深度探索动态语言核心技术》教程
 
 
 
 
Python总体架构,运行流程
 

File Group:
1.Core Modules
内部模块,例如:import os
2.Library
3.User-defined Modules
用户自定义的模块,例如定义一个getinfo.py,在test.py进行导入:import getinfo
 
Python Core(可称作解释器interpreter或虚拟机):
1.Scanner
进行词法分析,将人家输入的Python源代码或从命令行输入的一行行Python代码切分为一个token(标记)
2.Parser
进行语法分析,建立抽象语法树(AST)
3.Compiler
根据建立的AST生成指令集合(Python字节码(byte code),就像Java编译器和C#编译器所做的那样)
4.Code Evauator
最后由Code Evealuator来执行这些字节码,又可以称为虚拟机
 
Runtime Environment:
1.Object/Type Structures
包括了各种类型的对象,比如:整数、list、dict以及用户自定义的类型和对象
2.Memory Allocator
创建对象时,对内存的申请工作,是与C中的malloc的一层接口
3.Current State of Python
维护了解释器在执行字节码时不同的状态(比如正常状态和异常状态)之间的切换的动作。
 
Python源码主要目录结构
Include:该目录下包含了Python提供的所有头文件,如用户需要自己用C或C++来编写自定义模块扩展Python,那么就需要用到这个理提供的头文件。
Lib:该目录包含了Pyton自带的所有标准库,Lib中的库都是用Python语言编写的。
Modules:该目录中包含了所有用C语言编写的模块,比如random、cStringIO等。Modules中的模块是那些对速度要求非常严格的模块,而有些对速度没有太严格要求的模块,比如os,就是用Python编写,并放到Lib目录下的。
Parser:该目录中包含了Python解释器中的Scanner和Parser部分,即对Python源代码进行词法分析和语法分析的部分,除了这些,Parser目录下还包含了一些有用的工具,这些工具能够根据Python的语言的语法自动生成Python语言的词法和语法分析器,与YACC非常类似。
Objects:该目录中包含了所有Python的内奸对象,包括整数、list、dict等。同时,该目录还包括Python在运行时需要的所有内部使用对象的实现。
Python:该目录下包含了Python解释器中的Compiler和执行引擎部分,是Pyton运行的核心所在。
PCBuild:包含了Visual Studio 2003的工程文件,研究Python源码就从这里开始。
PCBuild8:包含了Visual Studio 2005使用的工程文件。
 
Python各个函数的作用
Objects/intobject.c/int_print         此函数是用于python整型类型的标准输出  
Objects/intobject.c/int_repr          此函数是用于IDLE整型类型的标准输出 
__builtins__.__dict__['int']              查看内建数据类型
 
 
tp_as_number 指向PyNumberMethods,定义一个是数值的对象
tp_as_number        指向PyNumberMethods,定义一个是数值的对象
tp_as_sequence      指向PySequenceMethods,定义一个序列对象
tp_as_mapping       指向PyMappingMethods,定义一个关联对象
 
 
三个对象属性可以同时存在例子:
 
>>> class MyInt(int):
...      def __getitem__(self,key):
...            return key+str(self)
...
>>>
>>> a=MyInt(1)
>>> b=MyInt(2)
>>> print(a+b)
3
>>> print(a['key'])
key1
 
 
 
 Python源码剖析需要准备的环境
1.需要安装vs2005
2.需要下载python2.5源码程序
 
下面我已经把需要的东西传到网盘,需要的请自行下载
https://pan.baidu.com/s/1miXKSFu
 
如有兴趣学习源码,愿意交流,请加QQ群:637040667

python源码剖析学习记录-01的更多相关文章

  1. Python源码剖析——01内建对象

    <Python源码剖析>笔记 第一章:对象初识 对象是Python中的核心概念,面向对象中的"类"和"对象"在Python中的概念都为对象,具体分为 ...

  2. Python源码剖析|百度网盘免费下载|Python新手入门|Python新手学习资料

    百度网盘免费下载:Python源码剖析|新手免费领取下载 提取码:g78z 目录  · · · · · · 第0章 Python源码剖析——编译Python0.1 Python总体架构0.2 Pyth ...

  3. Python 源码剖析(一)【python对象】

    处于研究python内存释放问题,在阅读部分python源码,顺便记录下所得.(基于<python源码剖析>(v2.4.1)与 python源码(v2.7.6)) 先列下总结:      ...

  4. Python 源码剖析 目录

    Python 源码剖析 作者: 陈儒 阅读者:春生 版本:python2.5 版本 本博客园的博客记录我会适当改成Python3版本 阅读 Python 源码剖析 对读者知识储备 1.C语言基础知识, ...

  5. Python源码剖析——02虚拟机

    <Python源码剖析>笔记 第七章:编译结果 1.大概过程 运行一个Python程序会经历以下几个步骤: 由解释器对源文件(.py)进行编译,得到字节码(.pyc文件) 然后由虚拟机按照 ...

  6. 【Python源码剖析】对象模型概述

    Python 是一门 面向对象 语言,实现了一个完整的面向对象体系,简洁而优雅. 与其他面向对象编程语言相比, Python 有自己独特的一面. 这让很多开发人员在学习 Python 时,多少有些无所 ...

  7. Python 源码剖析(六)【内存管理机制】

    六.内存管理机制 1.内存管理架构 2.小块空间的内存池 3.循环引用的垃圾收集 4.python中的垃圾收集 1.内存管理架构 Python内存管理机制有两套实现,由编译符号PYMALLOC_DEB ...

  8. 侯捷STL课程及源码剖析学习1

    1.C++标准库和STL C++标准库以header files形式呈现: C++标准库的header files不带后缀名(.h),例如#include <vector> 新式C hea ...

  9. 《python源码剖析》笔记一——python编译

    1.python的架构: 2.python源码的组织结构: 3.windows环境下编译python:

随机推荐

  1. [Android]Android之四种常见布局

    一个丰富的界面总是要由很多个控件组成的,那我们如何才能让各个控件都有条不紊地 摆放在界面上,而不是乱糟糟的呢?这就需要借助布局来实现了.布局是一种可用于放置很 多控件的容器,它可以按照一定的规律调整内 ...

  2. CodeForces - 500A-New Year Transportation(模拟)

    New Year is coming in Line World! In this world, there are n cells numbered by integers from 1 to n, ...

  3. Hdu1015&&寒假作业第二组I题

    题意是A-Z对应1-26,然后给个目标数字和字符串,看看字符串里的某5个字符的组合能不能使v - w^2 + x^3 - y^4 + z^5 = target等式成立,其实多写几个循环也可以达到目的, ...

  4. 线程池(1)ThreadPoolExecutor梳理

    使用默认的 thread factory创建ThreadPoolExecutor实例 public ThreadPoolExecutor(int corePoolSize, int maximumPo ...

  5. NSSM把.Net Core部署至 Windows 服务

    NSSM把.Net Core部署至 Windows 服务 https://www.cnblogs.com/emrys5/p/nssm-netcore.html 为什么部署至Windows Servic ...

  6. cas 单点登录服务端客户端配置

    首先,下载 cas-server-3.5.2-release http://pan.baidu.com/s/1GJ8Gs cas-client-3.2.1-release http://pan.bai ...

  7. SyntaxHighlighter

    SyntaxHighlighter uses separate syntax files called brushes to define its highlighting functionality ...

  8. Java学习知识体系大纲梳理

    感悟 很奇怪,我怎么会想着写这么一篇博客——Java语言的学习体系,这不是大学就已经学过的课程嘛.博主系计算机科班毕业,大学的时候没少捧着Java教程来学习,不管是为了学习编程还是为了期末考个高分,都 ...

  9. java的三大特性之一多态概述

    多态---概念 所谓多态就是一个引用在不同情况下的多种状态.多态是指通过指向父亲的指针,来调用在不同的子类中实现的方法. 多态---注意事项 00.java允许父类的引用变量引用它的子类的实例(对象) ...

  10. 【extjs6学习笔记】1.5 初始:关于布局

    absolute 绝对布局,这个布局使用 x 和 y 属性来指定组件的绝对定位 accordion 手风琴布局[可折叠布局]这个布局展示了在一个时间里只有一个内置的可支持折叠和展开的子级 panel ...