Хранение лямбд в словаре
Я пытался создать словарь со строкой для каждого ключа и лямбда-функцией для каждого значения. Я не уверен, где я ошибаюсь, но я подозреваю, что это либо моя попытка сохранить лямбду в словаре в первую очередь, либо тот факт, что моя лямбда использует оператор ярлыка.
код:
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
на месте.