文档章节

Python 1.5.2 vs 1.0.1 头文件部分变更比较

刘军兴
 刘军兴
发布于 2016/01/12 10:53
字数 922
阅读 40
收藏 1

Python 1.5.2 vs 1.0.1  (新 vs. 旧)

如同以前, 通过文件比较工具, 查看两个版本之间的差异.

Added Python.h:
   Include nearly all Python header files
   这样外面一般只需要包含此文件, 就能编写模块了.
  
Added abstract.h:
   Abstract Object Interface (many thanks to Jim Fulton)
   PROPOSAL: A Generic Python Object Interface for Python C Modules
   抽象对象接口/一般 python 对象接口.
   此文件很重要, 有大量的注释说明值得细看.
  
Deleted accessobject.h
Deleted allobjects.h  (新的 python.h 等价于该文件)
Deleted assert.h

bitset.h: 名字略微变动, 无本质变化.
Deleted bltinmodule.h
Added bufferobject.h :  Buffer object interface
   提供 PyBuffer_xxx 对象接口.

Added cStringIO.h : provides access to cStringIO objects from C.

ceval.h: 一般名字都改为 PyXXX, 包围以 DL_IMPORT(), Py_PROTO() 等宏.
  如 PyEval_xxx, Py_FlushLine, PyObject 等.
 
Deleted cgensupport.h

classobject.h : 名字改为 PyXXX

Added cobject.h : C objects to be exported from one extension module to another.
   用于在模块之间传递数据, 可看做是 void*.
   extern PyTypeObject PyCObject_Type.

compile.h : Definitions for bytecode
   改名为 PyCodeObject, 改用 lineno-table 机制.

Added complexobject.h : Complex number
   复数对象 PyComplexObject.

dictobject.h : 改名为 PyDictObject, 提供一组访问接口如 PyDict_Keys()

errcode.h : 新增一个, 无本质变化.

Deleted errors.h (可能改为 pyerrors.h )

eval.h : Interface to execute compiled code
   即接口函数 PyEval_EvalCode()

fileobject.h : PyFile_xxx

floatobject.h : PyFloatObject -- 浮点数对象.

frameobject.h : PyFrameObject -- 结构有一些调整, 引用含 PyThreadState, PyTryBlock 对象

funcobject.h : PyFunctionObject

grammar.h : 部分改名为 PyGrammar_XXX

import.h : PyImport_XXX; 对 inittab() 提供了接口.

intobject.h : PyIntObject.

intrcheck.h : PyOS_InterruptXXX() 中断检查, 如按下 Ctrl+C.

listobject.h : PyListObject .

longintrepr.h : long integer representation.
   多精度整数结构 PyLong_XXX.
longobject.h : PyLongObject .

Deleted mappingobject.h : 合并在 dictobject.h 中了.

marshal.h : PyMarshal_WriteXXX, _ReadXXX 读写接口.

metagrammar.h : 无本质变化.

methodobject.h : Method object interface
   改进为 PyCFunctionObject, PyMethodDef, PyMethodChain.

modsupport.h : Module support interface
   PyArg_Parse, _Bind :  参数解析/绑定估计改进了.
   Py_InitModule1,2,3,4 ...
  
moduleobject.h : Module object interface
   PyModule_XXX

mymalloc.h : 提供了一组 PyMem_xxx 宏/函数.
   一组包装的 Py_Malloc, _Realloc, _Free() 等.

Added mymath.h : 略, 与平台兼容有关.

myproto.h : 定义 Py_PROTO()

myselect.h : 与平台兼容有关, socket 相关.

mytime.h : 与平台兼容有关, time.h 相关.

node.h : Parse tree node interface
   解析树结构. PyNode_XXX.
  
object.h :
   PyObject, PyVarObject 结构确定.
   PyNumberMethods, PySequenceMethods, PyMappingMethods, PyBufferProcs 结构
   新增 tp_call, tp_str, tp_getattro, tp_setattro tp_as_buffer, tp_flags, tp_doc 等.
  
objimpl.h: PyObject_XXX 实现.

opcode.h : 增删了几个指令. CALL 统一为 CALL_FUNCTION.
    所以指令序号不连续了, 产生了空洞.

osdefs.h : 操作系统相关的一些定义.

parsetok.h : PyParser_XXX 无本质变化.

Added patchlevel.h : Newfangled version identification scheme.

pgenheaders.h : _Py_xxx 可能表示 python 内部使用的.

Added pydebug.h : 定义了一组 Py_DebugFlag .

Added pyerrors.h : 可能原来名为 errors.h
  PyErr_Set, _Clear, _Fetch 等. 异常处理相关定义.
  含一组预定义的异常, 如 PyExc_IOError 等.
 
Added pyfpe.h :  Define macros for handling SIGFPE.
   (可能用于浮点异常处理)

Added pystate.h : Thread and interpreter state structures and their interfaces
   PyInterpreterState (相当于进程) , PyThreadState (相当于线程)
   这样需了解如何实现多线程处理的.

pythonrun.h : Interfaces to parse and execute pieces of python code
   Py_Init, _Parse, _Run, _Exit 等接口.

Added pythread.h :
   定义 PyThread_XXX, 锁机制等.

rangeobject.h : Range object interface
   PyRangeObject .

rename1.h 改为 rename2.h :
   大量 python 原名字通过宏方式改名为新的 PyXXX 名字形式.
  
Added sliceobject.h : The unique ellipsis object "..."
   PySliceObject
 
stringobject.h : PyStringObject.

structmember.h : Interface to map C struct members to Python object...
   新增了几种支持的 C 数据类型(如 T_STRING_INPLACE)
   PyMember_Get, _Set

sysmodule.h : System module interface
   PySys_XXX

thread.h : PyThread_XXX, 实际实现在 pystate.h 中.

token.h : 无本质变化. (添加了数学 ** POW 运算符支持).

Deleted tokenizer.h : 可能移到 Parser 里面了.

traceback.h : 改名 PyTraceBack_XXX. 成为一个对象, 外面可访问.

tupleobject.h : PyTupleObject .


=================================================================
改动小结:
1. 名字变更为 PyXXX.
2. 新增了几种对象, 如 complex, slice 等.
3. 新增 TypeObject 中几个方法接口, callable, 魔法方法, 对象方法抽象接口.
4. Process/Thread 支持, 锁机制.
5. 异常处理增强/改进.

这些实现已经和最新版本接近了. 以后(这几天)有空再细节看一些.

© 著作权归作者所有

共有 人打赏支持
刘军兴
粉丝 54
博文 184
码字总数 226359
作品 0
昌平
VS Code 安装与使用,Python 顶级 IDE 编程指南!

介绍 Visual Studio Code (简称 VS Code / VSC) 是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比...

Python新世界
07/14
0
0
Python函数声明以及与其他编程语言数据类型的比较

1、函数声明 与其它大多数语言一样 Python 有函数,但是它没有像 C++ 一样的独立的头文件;或者像 Pascal 一样的分离的 interface / implementation 段。在需要函数时,像下面这样声明即可:...

光明辉煌
04/21
0
0
搭建V8代码的阅读兼开发环境 ( windows + VS-IDE )

新版本的V8不再包含IDE的工程文件了,scons工具也要转向gyp工具, (scons还是可以用的,注意scons和gyp都是基于python2的, python3修改了语法. scons和gyp无法使用,不过你不必卸载原先的python3...

Lunar_Lin
2012/03/06
0
0
python学习心得之资源对比

由于我报了阿里云的人工智能专业课程,所以python不得不学。 之前看阿里云课程里的python教学视频,看了两节,讲得虽然易懂,但是过于啰嗦,而且呢视频比文字学起来肯定要慢。 因为我喜欢比较...

天道99
07/01
0
0
0. Python3源码—编译

0.1. 整体架构 在最高的层次上,Python的整体架构可以分为三个主要的部分: 左:Python提供的大量的模块、库以及用户自定义的模块; 右:Python的运行时环境,包括对象/类型系统(Object/Ty...

whj0709
06/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
34分钟前
1
0
我为什么用GO语言来做区块链?

Go语言现在常常被用来做去中心化系统(decentralised system)。其他类型的公司也都把Go用在产品的核心模块中,并且它在网站开发中也占据了一席之地。 我们在决定做Karachain的时候,考量(b...

HiBlock
39分钟前
1
0
大数据学习脑图以及入门教程!

近些年,大数据的火热可谓是技术人都知道啊,很多人呢,也想学习大数据相关,所以,这里分享几个大数据脑图,希望可以让你清楚明白从哪里入门大数据,知道该学习以及掌握哪些知识点; 大数据...

董黎明
今天
1
0
聊聊redis的监控工具

序 本文主要研究一下redis的监控工具 redis-stat redis-stat是一个比较有名的redis指标可视化的监控工具,采用ruby开发,基于redis的info命令来统计,不影响redis性能。 docker运行 docker r...

go4it
今天
2
0
TypeScript基础入门之高级类型的索引类型(Index types)

转发 TypeScript基础入门之高级类型的索引类型(Index types) 高级类型 索引类型(Index types) 使用索引类型,编译器就能够检查使用了动态属性名的代码。 例如,一个常见的JavaScript模式是从...

durban
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部