学习《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. Django-Rest-Framework的解析器和渲染器

    Django-Rest-Framework的解析器和渲染器  restful framework 解析器 解析器的作用就是服务端接收客户端传来的数据,把数据解析成自己想要的数据类型的过程 本质就是对请 ...

  2. Codeforces Round #564 (Div. 2) A. Nauuo and Votes

    链接:https://codeforces.com/contest/1173/problem/A 题意: Nauuo is a girl who loves writing comments. One ...

  3. Linux Maven install

    1 下载 maven : http://maven.apache.org/download.cgi2 解压 tar -xvf apache-maven-3.3.9-bin.tar.gz3 移到所需目录 ...

  4. 057 Insert Interval 插入区间

    给出一个无重叠的按照区间起始端点排序的区间列表.在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间).示例 1:给定区间 [1,3],[6,9],插入并合并 ...

  5. oracle备份imp命令大全

    oracle中imp命令详细解释 Oracle的导入有用程序(Import utility)同意从数据库提取数据,而且将数据写入操作系统文件.imp使用的基本格式:imp[username[/pass ...

  6. c#基础_ArrayList

    list.AddRange(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }); //list.AddRange(list); //list.Clear();清空所有元素 ...

  7. Vue部分知识

    一.本尊建议的学习顺序:https://zhuanlan.zhihu.com/p/23134551(侵删) 二.安装: 1.安装 Node.js,可以去Node.js的官网上下载: 2.(非必选)如果 ...

  8. CF1168A Increasing by Modulo

    思路: 首先得做个转化,如果某个解法最终分别对a[i](i = 1, 2, ..., n)做了b[i](i = 1, 2, ..., n)次加1再取余的运算,那么可以等价地构造出x次(x = max( ...

  9. Git入门学习总结

    用了两天时间看完廖雪峰老师的git教程(http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b0 ...

  10. Linux基础环境_安装配置教程(CentOS7.2 64、JDK1.8、Tomcat8)

    Linux基础环境_安装配置教程 (CentOS7.2 64.JDK1.8.Tomcat8) 安装包版本 1)     VMawre-workstation版本包 地址: https://my.vmw ...