Подтвердить что ты не робот

Хранение лямбда в словаре

Я пытаюсь создать словарь со строкой для каждого ключа и лямбда-функцией для каждого значения. Я не уверен, где я ошибаюсь, но я подозреваю, что это либо моя попытка сохранить лямбда в словаре, либо тот факт, что моя лямбда использует оператор быстрого доступа.

Код:

dict = {
    'Applied_poison_rating_bonus': 
        (lambda target, magnitude: target.equipmentPoisonRatingBonus += magnitude)
}

SyntaxError: invalid syntax ошибка - SyntaxError: invalid syntax и указание прямо на мой +=. Являются ли операторы ярлыков не разрешены в лямбдах, или я даже дальше, чем я думал?

Ради здравомыслия, я пропустил сотни очень похожих пар (это не просто крошечный словарь).

РЕДАКТИРОВАТЬ:

Кажется, моя проблема заключалась в попытке присвоить что-либо в выражении лямбда. Как бы то ни было, моя проблема заключается в том, как я могу получить метод, который знает ключ к этому словарю, чтобы иметь возможность изменять это поле, определенное в моем (сломанном) коде?

Может ли какой-то вызов eval() помочь?

EDIT_FINAL:

Метод functools.partial() был рекомендован для этой расширенной части вопроса, и я считаю, что после изучения этого вопроса мне будет достаточно решить мою проблему.

4b9b3361

Ответ 1

Вы не можете использовать назначения в выражении, а lambda принимает только выражение.

Вы можете хранить лямбды в словарях в порядке:

dict = {'Applied_poison_rating_bonus' : (lambda target, magnitude: target.equipmentPoisonRatingBonus + magnitude)}

Вышеупомянутый lambda конечно, возвращает результат, он не изменит target.equimentPoisonRatingBonus на месте.