向python回调添加参数

use*_*361 4 python parameters lambda callback

我是Python的初学者,除了self和event外,我想向回调添加参数。我尝试了lambda,但没有成功。
目前,我的代码如下所示:

control = monitor(block, callback=self.model)  
Run Code Online (Sandbox Code Playgroud)

我的模型是:

def model(self, transaction)
Run Code Online (Sandbox Code Playgroud)

我想拥有 :

def model(self, file, transaction)   
Run Code Online (Sandbox Code Playgroud)

文件是一个字符串参数,我想通过更改以下内容的控制行传递给我的“模型”:

control = monitor(block, lambda transaction, args=args:    callback=self.model(transaction, args)  
Run Code Online (Sandbox Code Playgroud)

但这不起作用,并且它变得太高级了,但是我的python知识。
我收到以下错误:“ SyntaxError:lambda无法包含赋值”,我猜是因为=符号。

您能通过解释我应该如何进行/做错了什么来帮助我?

Gri*_*lis 5

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

from functools import partial

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

control = monitor(block, callback=partial(self.model, file='foobar'))
Run Code Online (Sandbox Code Playgroud)

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

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'))
Run Code Online (Sandbox Code Playgroud)