Найти - Пользователи
Полная версия: Выполнение строки как кода
Начало » Python для экспертов » Выполнение строки как кода
1
balu
Ситуация такова. Хочется что-то типа этого
def foo():
x, y = 2, 1
#Хочу как-нибудь выполнить код в строке ниже
return somerun("x+y")
Должно возвратить 3.

Есть мысль залезть в AST, но, может, есть мысли получше?
shiza
def foo():
x, y = 2, 1
return eval("x+y")
balu
А если строка многострочник?
eval(“x = x+y; x += 1”) уже не работает.
regall
Можна еще так:
exec(“x = x+y; x+=1”) .
Тогда многострочник работает
regall
Разница в том, что eval() выполняет только Expression, тогда как exec() выполняет Statement
cybergrind
balu
Есть мысль залезть в AST, но, может, есть мысли получше?
разве там можно чтото редактировать?
shiza
balu
А если строка многострочник?
eval(“x = x+y; x += 1”) уже не работает.
тогда можно exec, но после return уже не напишешь:
def foo():
x, y = 2, 1
exec("x = x+y; x += 1")
return x
balu
Спасибо, то, что надо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB