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就地改变.
| 归档时间: |
|
| 查看次数: |
19626 次 |
| 最近记录: |