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

标签 python c global-variables python-module python-c-api

我正在使用 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/

相关文章:

python - 使用正则表达式解析文件并进行修改

python - Airflow - SubDag 中长时间运行的任务在一小时后标记为失败

c - 为什么这个指针没有被取消引用?

c - 形参1的类型不完整

python - python中的“全局名称未定义”概念

iOS 错误预期 ')'

python - 使用零和五创建一个 numpy 数组 (10x1)

python - 在 python 中使用 iGraph 进行社区检测并将每个节点的社区编号写入 CSV

python - 传递给 C API 的参数对于 Python 中的子线程没有意义

以全局变量为数据源的 PHP session 副作用警告