将元组作为参数通过回调函数传递给目标函数
为了增加回调函数的可读性,想将目标函数的参数作为元组进行整体传送。
最近看到多线程处理中 treading.Thread() 就是很好的例子,实现效果如下:
thd = threading.Thread(target=fun, args=(lst, args))
可惜没有源码,不知道如何实现的。于是自己摸索找到如下实现方式。代码如下:
def callback(fun, args=(), **kwargs):
""" 回调函数
fun: 被回调函数名称
args: 回调函数的参数
kwargs: 其他参数
"""
a = []
if len(args) != len(fun.__code__.co_varnames):
raise Exception("参数数量不一致")
cmd = "fun("
for i in range(len(fun.__code__.co_varnames)):
item = "args[%d]" % i
a.append(item)
cmd = cmd + ', '.join(a) + ')'
return eval(cmd)
def add(x, y):
return x + y
a = callback(fun=add, args=(2, 4))
print(a)
不知道还有没有其他更好的实现方式。
浙公网安备 33010602011771号