У меня есть строковое выражение, на котором мне нужно выполнить eval. Это выражение может иметь имена ключей из данного словаря, а значения для этих ключей могут быть или не быть строками. Чтобы мой eval мог оценить эти имена, я создаю переменные с именами ключей, которые появляются в этом dict, и назначаю ему значение из dict, как в примере ниже. Но из того, что я прочитал здесь , нельзя использовать vars (). Это заставило меня беспокоиться о стабильности, а также о рисках, которые я реализовал. Любые мысли или предложения о том, как это лучше понять?
def test(e1,d1):
for k,v in d1.iteritems():
if k in e1:
vars()[k]=v
return eval(e1)
test('x+y', {'x':1, 'y':2})
Спасибо !!