单阶段初始化创建可以在当前解释器上下文中被查找的单例模块。这使得仅通过模块定义的引用,就可以检索模块对象。
这些函数不适用于通过多阶段初始化创建的模块,因为可以从一个模块定义创建多个模块对象。
PyObject *PyState_FindModule(PyModuleDef *def)
返回值:借入的引用。 属于 稳定 ABI.
返回当前解释器中由 def 创建的模块对象。此方法要求模块对象此前已通过 PyState_AddModule() 函数附加到解释器状态中。如果找不到相应的模块对象,或模块对象还未附加到解释器状态,返回 NULL。
int PyState_AddModule(PyObject *module, PyModuleDef *def)
属于 稳定 ABI 自 3.3 版开始.
将传给函数的模块对象附加到解释器状态。 这将允许通过 PyState_FindModule() 来访问该模块对象。
仅在使用单阶段初始化创建的模块上有效。
Python 会在导入一个模块后自动调用 PyState_AddModule,因此从模块初始化代码中调用它是没有必要的(但也没有害处)。 显式的调用仅在模块自己的初始化代码后继调用了 PyState_FindModule 的情况下才是必要的。 此函数主要是为了实现替代导入机制(或是通过直接调用它,或是通过引用它的实现来获取所需的状态更新详情)。
调用时必须携带GIL。
成功是返回 0 或者失败时返回 -1。
在 3.3 版本加入.
int PyState_RemoveModule(PyModuleDef *def)
属于 稳定 ABI 自 3.3 版开始.
从解释器状态中移除由 def 创建的模块对象。 成功时返回 0,者失败时返回 -1。
调用时必须携带GIL。
在 3.3 版本加入. |