gpt4 book ai didi

python - 将参数添加到python回调

转载 作者:太空宇宙 更新时间:2023-11-03 14:58:00 35 4
gpt4 key购买 nike

我是 Python 初学者,除了 self 和 event 之外,我还想给回调添加一个参数。我尝试过使用 lambda,但没有成功。
我的代码现在看起来像这样:

control = monitor(block, callback=self.model)  

我的模型是:

def model(self, transaction)

我想要:

def model(self, file, transaction)   

文件是我想传递给我的“模型”的字符串参数我尝试通过更改控制线:

control = monitor(block, lambda transaction, args=args:    callback=self.model(transaction, args)  

但这行不通,而且它变得太高级了,但是我的 python 知识。
我收到以下错误:“语法错误:lambda 不能包含赋值”,我猜是因为 = 符号。

你能帮我解释一下我应该如何进行/我做错了什么吗?

最佳答案

很多时候,当您考虑使用 lambda 时,最好使用执行 currying(或 curryfication)的 functools.partial()。你可以使用

from functools import partial

def model(self, transaction, file=None):
...

control = monitor(block, callback=partial(self.model, file='foobar'))

要回答您在下面的评论,如果您真的需要一个真正的功能,您可以自己设计:

def callback(func, **kwargs):
@functools.wraps(func)
def wrapper(*a, **k):
return functools.partial(func, **kwargs)(*a, **k)
return wrapper

control = monitor(block, callback=callback(self.model, file='foobar'))

关于python - 将参数添加到python回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41078154/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com