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

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

код:

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

ошибки воспитывается составляет SyntaxError: invalid syntax и указывая прямо на меня +=. Операторы ярлыков не разрешены в lambdas, или я еще дальше трек, чем я думал?

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

EDIT:

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

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

EDIT_FINAL:

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

1 ответов


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

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

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

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