通过C API在Python模块中定义全局变量

发布于 2021-01-29 17:30:53

我正在使用C API开发适用于Python的模块。如何创建在Python中被视为全局变量?

例如,如果我的模块是module,我想创建一个g可以完成此任务的变量:

import module
print module.g

特别g是整数。

Alex Martelli的解决方案

PyObject *m = Py_InitModule("mymodule", mymoduleMethods);
PyObject *v = PyLong_FromLong((long) 23);

PyObject_SetAttrString(m, "g", v);
Py_DECREF(v);
关注者
0
被浏览
137
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以在模块的初始化例程中使用PyObject_SetAttrString,第一个参数o是模块的(强制转换(PyObject*)为),第二个参数attr_name是“
    g”,第三个参数v是变量

    PyObject *v = PyLong_FromLong((long) 23);
    

    (或者其他任何当然的值,23仅是示例!-)。

    切记v之后请先解密。

    还有其他方法,但这是简单而通用的。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看