我正在使用 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);
最佳答案
您可以使用 PyObject_SetAttrString在模块的初始化例程中,第一个参数 o
是(转换为 (PyObject*)
的)你的模块,第二个参数 attr_name
是“g",第三个参数 v
是一个变量
PyObject *v = PyLong_FromLong((long) 23);
(或者当然是任何其他值,23
只是一个例子!-)。
请记住在之后递减 v
。
还有其他方法,但这个方法简单通用。
关于python - 通过 C API 在 Python 模块中定义全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3001239/