eval
опционально принимает словари globals
и locals
. Поэтому вы можете сделать это:
namespace = dict(foo=5, bar=6)
print eval('foo*bar', namespace)
Имейте в виду, что eval
является "злом", потому что небезопасно, если исполняемой строке нельзя доверять. Это должно быть хорошо для вашего вспомогательного скрипта.
Для полноты, есть также ast.literal_eval()
, который безопаснее, но он оценивает только литералы, что означает, что нет способа дать ему диктовку.