将扩展模块移植到Python 3 author: Benjamin Peterson 摘要 虽然改变C-API不是Python 3的目标之一,许多Python级别的更改使得Python 2的API无法实现。事实上,在//级别上,int()和long()统一等一些变化更为明显。本文档努力记录不兼容性以及它们如何解决. 条件编译 只编译Python 3的一些代码的最简单方法是检查PY_MAJOR_VERSION大于或等于3. #if PY_MAJOR_VERSION >= 3 #define IS_PY3K #endif API不存在的函数可以在条件块中等同于它们的等价物 更改为对象API

在堆上分配对象 PyObject * _PyObject_New( PyTypeObject  *type) Return value: New reference. PyVarObject * _PyObject_NewVar( PyTypeObject  *type,Py_ssize_t  size) Return value: New reference. PyObject * PyObject_Init( PyObject  *op,PyTypeObject  *type) Return value: Borrowed reference. 使用类型和初始引用初始化一个新分配的对象op

DateTime Objects 各种日期和时间对象由datetime模块提供。在使用任何这些函数之前,头文件datetime.h必须包含在你的来源中(注意这不包含在Python.h中)和宏PyDateTime_IMPORT必须调用,通常作为模块初始化函数的一部分。宏将一个指向C结构的指针放到一个静态变量PyDateTimeAPI中,由下面的macros使用 用于访问UTC singleton的宏: PyObject * PyDateTime_TimeZone_UTC 返回表示UTC的时区单例,与datetime.timezone.utc. 相同的对象,版本3.7. Type-check ma

生成器对象 生成器对象是Python用来实现生成器迭代器的对象。它们通常是通过迭代产生值的函数来创建的,而不是明确地调用PyGen_New()或PyGen_NewWithQualName(). PyGenObject 用于生成器对象的C结构. PyTypeObject PyGen_Type 对应于生成器对象的类型对象. int PyGen_Check( PyObject  *ob) 如果ob是一个发电机对象;ob必须不 NULL. int PyGen_CheckExact(的PyObject  *ob) 如果ob的类型是PyGen_Type;ob必须不 NULL. PyObject * PyG

弱引用对象 Python支持weak references作为第一类对象。有两种特定的对象类型直接实现弱引用。第一个是简单的参考对象,第二个作为原始对象的代理,尽可能地 // PyWeakref_Check( ob ) 如果ob是引用或代理对象,则返回true . int PyWeakref_CheckRef( ob ) 如果ob是参考对象,则返回true. int PyWeakref_CheckProxy( ob ) 如果ob是代理对象,则返回true。 PyObject* PyWeakref_NewRef( PyObject  *ob,PyObject *callback) Return

builtins– 内置对象 此模块提供对Python的所有“内置”标识符的直接访问;例如,builtins.open是内置函数的全名open()。见内置函数和内置常量 fordocumentation. 这个模块通常不会被显式访问大多数应用程序,但可以在提供与内置值同名的对象的模块中使用,但是也需要该名称的内置。例如,在一个想要实现包含内置open()的open()函数的模块中,这个模块可以直接使用: import builtinsdef open(path): f = builtins.open(path, “r”) return UpperCaser(f)class Uppe

bdb– 调试器框架 源代码: Lib / bdb.py bdb模块处理基本的调试器函数,比如设置断点或通过调试器管理执行. 定义了以下异常: exception bdb.BdbQuit Bdb类为退出调试器而提出的异常. bdb模块也定义了两个类: class bdb.Breakpoint(self, file, line, temporary=0, cond=None, funcname=None) 这个类实现临时断点,忽略计数,禁用和(重新)启用,以及条件. 断点通过一个名为bpbynumber的列表和(file, line)通过bplist对的索引编号。前者指的是类Brea