LinuxSir.cn,穿越时空的Linuxsir!

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

底层模块创建函数

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


当使用多阶段初始化时,将会调用以下函数。例如,在动态创建模块对象的时候,可以直接使用它们。注意,必须调用 PyModule_FromDefAndSpec 和 PyModule_ExecDef 来完整地初始化一个模块。

PyObject *PyModule_FromDefAndSpec(PyModuleDef *def, PyObject *spec)
返回值:新的引用。
根据在 def 中给出的定义和 ModuleSpec spec 创建一个新的模块对象。 它的行为类似于 PyModule_FromDefAndSpec2() 将 module_api_version 设为 PYTHON_API_VERSION。

在 3.5 版本加入.

PyObject *PyModule_FromDefAndSpec2(PyModuleDef *def, PyObject *spec, int module_api_version)
返回值:新的引用。 属于 稳定 ABI 自 3.7 版开始.
创建一个新的模块对象,在参数 def 和 spec 中给出定义,设置API版本为参数 module_api_version。如果该版本与正在运行的解释器版本不匹配,则会触发 RuntimeWarning。

备注 大多数时候应该使用 PyModule_FromDefAndSpec() 代替使用此函数,除非你确定需要使用它。
在 3.5 版本加入.

int PyModule_ExecDef(PyObject *module, PyModuleDef *def)
属于 稳定 ABI 自 3.7 版开始.
执行参数*def*中给出的任意执行槽(Py_mod_exec)。

在 3.5 版本加入.

int PyModule_SetDocString(PyObject *module, const char *docstring)
属于 稳定 ABI 自 3.7 版开始.
将*module*的文档字符串设置为*docstring*。当使用 PyModule_Create 或 PyModule_FromDefAndSpec 从 PyModuleDef 创建模块时,会自动调用此函数。

在 3.5 版本加入.

int PyModule_AddFunctions(PyObject *module, PyMethodDef *functions)
属于 稳定 ABI 自 3.7 版开始.
将以 NULL 结尾的*functions*数组中的函数添加到*module*模块中。有关单个条目的更多细节,请参与 PyMethodDef 文档(由于缺少共享的模块命名空间,在C中实现的模块级“函数”通常将模块作为它的第一个参数,与Python类的实例方法类似)。当使用 PyModule_Create 或 PyModule_FromDefAndSpec 从 PyModuleDef 创建模块时,会自动调用此函数。

在 3.5 版本加入.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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