use*_*361 4 python parameters lambda callback
我是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知识。
我收到以下错误:“ SyntaxError:lambda无法包含赋值”,我猜是因为=符号。
您能通过解释我应该如何进行/做错了什么来帮助我?
很多时候,当您考虑使用lambda时,最好使用functools.partial()执行currying(或curryfication)的方法。您可以使用
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'))
| 归档时间: | 
 | 
| 查看次数: | 1725 次 | 
| 最近记录: |