在字典中存储lambdas

Bla*_*ble 18 python lambda dictionary

我一直在尝试为每个键创建一个包含字符串的字典,并为每个值创建一个lambda函数.我不知道我哪里出错了但是我怀疑它是我首先尝试将lambda存储在字典中,还是我的lambda使用快捷操作符.

码:

dict = {
    'Applied_poison_rating_bonus': 
        (lambda target, magnitude: target.equipmentPoisonRatingBonus += magnitude)
}
Run Code Online (Sandbox Code Playgroud)

提出的错误是SyntaxError: invalid syntax指向我的错误+=.lambda中不允许使用快捷操作符,或者我是否比我想象的更偏离轨道?

为了理智,我省略了数百个非常相似的对(它不仅仅是一个小字典.)

编辑:

看来我的问题是试图在lambda表达式中分配任何东西.但是,我要解决的问题是如何才能获得一个方法,只知道该字典的关键字能够改变我(破碎)代码中定义的字段?

某种方式调用eval()有帮助吗?

EDIT_FINAL:

functools.partial()方法被推荐到问题的这个扩展部分,我相信在研究它之后,我会发现它足以解决我的问题.

Mar*_*ers 34

您不能在表达式中使用赋值,而lambda只能使用表达式.

你可以将lambdas存储在字典中,不然之外:

dict = {'Applied_poison_rating_bonus' : (lambda target, magnitude: target.equipmentPoisonRatingBonus + magnitude)}
Run Code Online (Sandbox Code Playgroud)

上面lambda当然只返回结果,它不会target.equimentPoisonRatingBonus就地改变.

  • @BlackVegetable:你不能使用一个泛型函数,也许使用`functools.partial()`为每个字典条目赋予它参数? (2认同)
  • 我相信你不仅仅回答了这个具体问题.我将更多地关注functools.partial().谢谢(5分钟后接受). (2认同)