类型对象 也许Python对象系统最重要的结构之一是定义新类型的结构:PyTypeObject结构。可以使用PyObject_*()或PyType_*()函数中的任何一个来处理类型对象,但是对于大多数Python应用程序来说,它们并没有提供太多有趣的东西。这些对象是对象行为的基础,对于解释器本身以及实现新类型的任何扩展模块非常重要. 与大多数标准类型相比,类型对象相当大。大小的原因是每个类型对象存储大量值,主要是Cfunction指针,每个指针都实现了类型功能的一小部分。本节详细介绍了类型对象的字段。这些字段将按照它们在结构中的顺序进行描述. Typedef:unaryfunc,binaryf

实例方法对象 实例方法是PyCFunction以及绑定PyCFunction到一个类对象。它取代了之前的呼叫PyMethod_New(func, NULL, class). PyTypeObject PyInstanceMethod_Type 这个的实例PyTypeObject表示Python instancemethod类型。它没有暴露给Python程序. int PyInstanceMethod_Check(的PyObject  *o) 如果o是一个实例方法对象(具有类型PyInstanceMethod_Type)。参数不能是NULL. PyObject * PyInstanceMetho

设置对象 本节详细介绍了set和frozenset对象的公共API。下面列出的任何功能最好使用抽象对象协议(包括PyObject_CallMethod(),PyObject_RichCompareBool(), PyObject_Hash(),PyObject_Repr(), PyObject_IsTrue(), PyObject_Print(),和PyObject_GetIter())或抽象数字协议(包括PyNumber_And(), PyNumber_Subtract(), PyNumber_Or(),PyNumber_Xor(), PyNumber_InPlaceAnd(),PyNumb

2.定义扩展类型:教程 Python允许C扩展模块的编写者定义可以从Python代码操作的新类型,就像内置的str和list类型。所有扩展类型的代码都遵循一种模式,但在开始之前,您需要了解一些细节。本文档是对该主题的温和介绍.   2.1。基础知识 CPython 运行时将所有Python对象视为PyObject*类型的变量,它充当所有Python对象的“基类型”.PyObject结构本身只包含对象的引用计数以及指向对象“类型对象”的指针。这是动作的位置;例如,类型对象确定解释器调用哪个(C)函数,例如,一个属性被查看一个对象,一个被调用的方法,或者它被另一个对象乘以。这些C函数被称

1.使用C或C ++扩展Python 向Python中添加新的内置模块非常容易,如果你知道C中的toprogram如何。这样extension modules可以做两件事就可以’t bedone直接在Python中:它们可以实现新的内置对象类型,它们可以调用C库函数和系统调用. 为了支持扩展,Python API(应用程序编程接口)定义了一组函数,宏和变量,提供对Python运行时系统的大多数方面的访问。Python API包含在一个Csource文件中,包含标题”Python.h”. 扩展模块的编译取决于它的预期用途以及你的系统设置;细节在后面的章节中给出. 注意 C扩展接口特定

optparse– 用于命令行选项的解析器 源代码: Lib / optparse.py 从版本3.2开始不推荐使用: optparse模块已弃用,不会进一步开发;继续开发argparse模块 optparse是一个比旧的getopt模块更方便,更灵活,更强大的解析命令行选项的库。optparse使用amore声明式命令行解析方式:创建OptionParser的实例,用选项填充它,并解析命令行。optparse允许用户指定常规GNU / POSIX语法中的选项,并为您生成使用和帮助消息. 这是一个使用optparse在一个简单的脚本: from optparse import Op

pty– 伪终端实用程序 源代码: Lib / pty.py pty模块定义了处理伪终端概念的操作:启动另一个进程并能够以编程方式写入和读取其控制终端. 因为伪终端处理高度依赖于平台,所以只有Linux代码才有。(Linux代码应该可以在其他平台上运行,但尚未经过测试。) pty模块定义了以下功能: pty.fork() 叉子。将孩子的控制终端连接到伪终端。返回值是(pid, fd)。请注意,孩子得到pid 0,而fd是invalid。父项的返回值是孩子的pid,而fd是连接到孩子控制终端的文件描述符(也是孩子的标准输入和输出). pty.openpty() 使用os.openpt

crypt– 检查Unix密码的功能 源代码: Lib / crypt.py 这个模块实现了crypt(3)例程,它是基于修改的DES算法的单向散列函数;有关更多详细信息,请参见Unix联机帮助页可能的用途包括存储散列密码,以便您可以在不存储实际密码的情况下检查密码,或者尝试用字典破解Unix密码. 请注意,此模块的行为取决于crypt(3)在运行系统中的例程。因此,当前实现中可用的任何扩展也将在该模块上可用. 哈希方法 3.3版本中的新功能 cryptmodule定义了散列方法列表(并非所有平台都可以使用所有方法): crypt.METHOD_SHA512 模块化加密格式方法,基

pyclbr– Python类浏览器支持 源代码: Lib / pyclbr.py pyclbr模块提供有关定义的函数,类和方法的有限信息在Python编码的模块中。该信息足以实现模块浏览器。信息是从Python源代码中提取的,而不是通过导入模块,因此该模块可以安全地与不受信任的代码一起使用。这种限制使得无法将此模块与未在Python中实现的模块一起使用,包括所有标准和可选的扩展模块. pyclbr.readmodule(module, path=None) 返回一个字典,将模块级类名映射到classdescriptors。如果可能,包含导入基类的描述符。参数module是一个字符

tokenize– Python源代码 源代码: Lib / tokenize.py tokenizemodule为Python源代码提供了一个词法扫描程序,用Python实现。该模块中的扫描仪可以很好地返回注释,这对于实现“漂亮的打印机”非常有用,包括用于屏幕显示的彩色打印机. 为了简化令牌流处理,所有运营商和分隔符代币和Ellipsis使用通用OP令牌类型。确切的类型可以通过检查exact_type上的财产命名为元组从返回tokenize.tokenize(). 令牌输入 主要入口点是发电机: tokenize.tokenize(readline) tokenize()生成器需