在Python和C之间实现回调

1 投票
2 回答
1296 浏览
提问于 2025-04-16 06:04

我用SWIG把一些C代码包装成了Python库。

在这个框架里,我写的Python代码会调用一个C函数,这个函数会返回一个字符串。不过,这个C函数在生成字符串时需要一个排名,而这个排名是我在Python里实现的。我该如何使用回调来实现这个呢?

我认为这个过程可以分成几个步骤。

1) Python创建一个C对象: import test_Objects # test_Objects是被包装的C文件 C = test_objects.my_class()

2) 调用my_class对象的相关方法,返回一个字符串: txt_1 = "string1" txt_2 = "string2" result = C.sorted_string(txt_1, txt_2)

2.1) 我希望sorted_string能调用下面的Python函数,这个函数会返回一个排序后的列表。

   def sorted_string([my_list]):
       .....
       .....
       return your_list

2.2) sorted_string会利用这个列表来生成结果。

我该如何实现步骤2.1呢?

2 个回答

0

这不是针对你问题的具体回答,但我这里有一个我问过的例子:swig-passing-argument-to-python-callback-function

希望这对你有帮助。

0

PyObject_Call*() 这个函数可以用来从C语言中调用Python的函数或者方法。

撰写回答