学习《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. Java 多线程高并发编程 笔记(一)

    本篇文章主要是总结Java多线程/高并发编程的知识点,由浅入深,仅作自己的学习笔记,部分侵删. 一 . 基础知识点 1. 进程于线程的概念 2.线程创建的两种方式 注:public void run( ...

  2. MyEclipse 2016CI破解版for Mac

    网上的教程很多,一开始怎么都不行,就是不行,也是如此操作,可能是注册机失效了还是怎样,数个小时过去了,我综合了网上的资源,终于OK啦!(我会在文后给出jar 包,注册机的破解文件,以及MyEclips ...

  3. IBM Websphere MQ常用命令及常见错误

    MQSC: MQ Script Command  (不区分大小写) 注明: 下面命令行中的队列管理器名字,队列名字分别用QmgrName, QName替代. 下面标蓝色的,都需要根据实际配置更改! 打 ...

  4. mysql5.7日志时间戳(log_timestmaps)与系统时间不一致问题以及日志报Got an error reading communication packets情况分析

    一.mysql安装后error_log日志时间戳默认为UTC(如下图),因此会造成与系统时间不一致,与北京时间相差8个小时. 解决errro_logs时间戳与linux系统时间不一致问题 step1: ...

  5. JS 时间格式为/Date(1332919782070)/ 转化为正常的格式

    原理是取中间的毫秒数,再转换成js的Date类型 function ChangeDateFormat(val) { if (val != null) { var date = new Date(par ...

  6. Memcache未授权访问漏洞利用及修复

    Memcached是一套分布式的高速缓存系统.它以Key-Value(键值对)形式将数据存储在内存中,这些数据通常是应用读取频繁的.正因为内存中数据的读取远远大于硬盘,因此可以用来加速应用的访问.本文 ...

  7. OpenCV ——IplImage应用解析

    由于OpenCV主要针对的是计算机视觉方面的处理,因此在函数库中,最重要的结构体是IplImage结构.IplImage结构来源于Intel的另外一个函数库Intel Image Processing ...

  8. oracle备份imp命令大全

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

  9. Could not load file or assembly 'Oracle.ManagedDataAccessDTC.DLL' or one of its dependencies.

    Could not load file or assembly 'Oracle.ManagedDataAccessDTC.DLL' or one of its dependencies.  不是有效的 ...

  10. 策略模式和php实现

    策略模式: 策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并让它们可以相互替换.策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy). 策略模式 ...