Рассмотрим следующий пример:объем Eval функции в Python
i=7
j=8
k=10
def test():
i=1
j=2
k=3
return dict((name,eval(name)) for name in ['i','j','k'])
Она возвращает:
>>> test()
{'i': 7, 'k': 10, 'j': 8}
Почему Eval не принимает во внимание переменные, определенные внутри функции? Из документации вы можете передать глобальные и локальные словари. Что это значит? Наконец, как я могу изменить этот маленький случай, чтобы заставить его работать?
вы можете изменить его на работу, добавив 'global' Перед объявлением переменной внутри функции но это плохая идея, с другой стороны, использование 'eval', как правило, является плохой идеей. – Rusty
Что сказал ржавый - если вы не уверены, что хотите использовать eval, держитесь подальше от него. – l4mpi
@ l4mpi Я знал, что eval - плохая идея, но я просто играл с областями, и я просто не понял этого поведения – Pierpaolo