Python 源码分析之初体验

在 python 中,对象就是 C 中结构体在堆上申请的一块内存,一般来说,
对象不能静态初始化,并且也不能在栈上空间生存。唯一的例外就是类型
对象,python 中所有的內建的类型对象(整数类型对象,字符类型对象)
都是静态初始化的

python 架构

外部调用

  • Core Modules
  • Library
  • User-defined Modules

Python Core

  1. Scanner : 即词法分析,将 python 代码分为一个个 token
  2. Parser : 即语法分析,根据 token 建立 AST
  3. Compiler : 根据 AST 生成 python 字节码
  4. Code Evauator : 执行字节码

Runtime Environment

  • Object/Type Structure : Python 中各种数据结构的 C 实现
  • Memory Allocator : 内存申请,分配,python 运行时与 C 中 malloc 的接口
  • Current State of Python :解释器在执行字节码时的不同状态

源代码结构

  • Doc : 文档
  • Include : 头文件,用户自定义的 C/C++ 扩展模块需要放到这里
  • Lib : python 标准库,全部用 python 实现
  • Modules : C 语言编写的模块, 主要考虑对性能要求非常苛刻
  • Objects : python 全部内建对象, list, dict, set 等
  • Parser : Scanner 和 Parser 部分。
  • Python : Compiler 和 Code Evauator 部分
  • Tools : 周边工具,gdb, ccbench, iobench, pybench 等

后续主题

  1. python 常用对象
  2. python 编译时
  3. python 运行时
  4. python 字节码
  5. python 控制流
  6. python 函数机制
  7. python 类机制
  8. python 运行环境初始化
  9. python 模块机制
  10. python 多线程机制
  11. python 内存管理机制

系好安全带,让我们开始 python 源码之旅。

你可能感兴趣的:(python,Python,源码分析,python,源码分析)