如何解决python DLL中的函数指针
我正在通过DLL文件编写用于C代码的Python脚本。 我不知道如何在Python中调用回调函数。 我在互联网上发现了很多有用的东西,但我仍然想念很多。 我在C中有以下代码:
typedef uint16(*CALLBACK_1)(DATA *data);
typedef uint16(*CALLBACK_2)(DATA *data);
uint16 end_function(OPT *opt,CALLBACK_1 function_1,CALLBACK_2 function_2,DATA *data);
谢谢!
解决方法
我已经搜索了Python中的回调示例。我发现此链接:https://gist.github.com/mchung/76d774879245b355e8bff95f9172f9f8,其代码如下:
# Example of using callbacks with Python
#
# To run this code
# 1. Copy the content into a file called `callback.py`
# 2. Open Terminal and type: `python /path/to/callback.py`
# 3. Enter
def add(numbers,callback):
results = []
for i in numbers:
results.append(callback(i))
return results
def add2(number):
return number + 2
def mul2(number):
return number * 2
print add([1,2,3,4],add2) #=> [3,4,5,6]
print add([1,mul2) #=> [2,6,8]
看看名为add
的函数。它获得两个参数:numbers
和callback
。数字是numbers
的数组,而callback
是一个函数。此函数创建一个名为results
的数组作为空数组,并循环遍历numbers
,调用callback(i)
并将结果附加到results
。如您所见,回调可以位于函数内部的called
中。在最后两行中,两个单独的函数传递给add
,它们将在函数内部充当callback
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。