问题描述
我正在通过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
。