Одновременный eval и exec - PullRequest
0 голосов
/ 04 августа 2010

Есть ли способ заставить python выполнять оценку и выполнение над строкой? У меня есть файл, который содержит кучу выражений, которые нужно вычислить, может быть, что-то вроде этого.

f1(ifilter(myfilter,x))
f2(x)*f3(f4(x)+f5(x))

Я запускаю файл и eval выражения.

Некоторые выражения могут захотеть сохранить свою работу после выполнения дорогостоящей операции

y = g(x); h(y)+j(y)

К сожалению, y=g(x) требует exec, но получение значения h+j является eval. Как это работает?

1 Ответ

1 голос
/ 04 августа 2010

Попробуйте использовать встроенный compile().Когда вы используете его в одиночном режиме, он обрабатывает оба случая, которые вы хотите.Например:

compile('3+4','<dummy>','single')

вернет объект скомпилированного кода.Вы можете выполнить его с помощью exec () или eval ():

>>> exec(compile('3+4','<dummy>','single'))
7
>>> exec(compile('x=3+4','<dummy>','single'))
>>> print x
7
...