Форум сайта python.su
Ситуация такова. Хочется что-то типа этого
def foo():
x, y = 2, 1
#Хочу как-нибудь выполнить код в строке ниже
return somerun("x+y")
Офлайн
def foo():
x, y = 2, 1
return eval("x+y")
Офлайн
А если строка многострочник?
eval(“x = x+y; x += 1”) уже не работает.
Офлайн
Можна еще так:
exec(“x = x+y; x+=1”) .
Тогда многострочник работает
Офлайн
Разница в том, что eval() выполняет только Expression, тогда как exec() выполняет Statement
Офлайн
baluразве там можно чтото редактировать?
Есть мысль залезть в AST, но, может, есть мысли получше?
Офлайн
baluтогда можно exec, но после return уже не напишешь:
А если строка многострочник?
eval(“x = x+y; x += 1”) уже не работает.
def foo():
x, y = 2, 1
exec("x = x+y; x += 1")
return x
Офлайн
Спасибо, то, что надо
Офлайн