LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 237|回复: 0

查找模块

[复制链接]
发表于 2024-2-4 01:40:21 | 显示全部楼层 |阅读模式


单阶段初始化创建可以在当前解释器上下文中被查找的单例模块。这使得仅通过模块定义的引用,就可以检索模块对象。

这些函数不适用于通过多阶段初始化创建的模块,因为可以从一个模块定义创建多个模块对象。

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 版本加入.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表