如何从 C-API 按名称调用 python 函数?
从 c-api 中,我想按名称调用 python 函数。然后我将使用 python 对象列表作为参数来调用该函数。
在 Python 文档中,我不清楚如何从主 python 解释器获取“Callable”对象。
任何帮助都值得赞赏:
- 从函数获取地址
- 使用我的PythonObject作为参数调用函数。
我正在使用 Python 2.x 系列进行开发。
From the c-api, I would like to call a python function by name. I would then be calling the function with a list of python objects as arguments.
It is not clear to me in the Python documentation how I would get a "Callable" object from the main python interpreter.
Any help appreciated in:
- Getting the address from the function
- Calling the function with my PythonObject's as arguments.
I'm using Python 2.x series for my development.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
基本上,您使用 Python C API 获取该函数所在的模块,然后查询该函数的模块字典。这或多或少与 Python 代码从某处调用函数时 Python 运行时在内部执行的操作相同。
API 中需要查看的相关函数有
PyImport_ImportModule
、PyModule_GetDict
、PyDict_GetItem
和PyObject_CallXXX
系列函数。Basically, you use the Python C API to get the module the function is contained in, then query the module dictionary for the function. That's more or less the same what the Python runtime does internally when your Python code invokes a function from somewhere.
Relevant functions from the API to look at are
PyImport_ImportModule
,PyModule_GetDict
,PyDict_GetItem
and thePyObject_CallXXX
family of functions.