Dado un nodo ast
que se puede evaluar por sí mismo, pero no es lo suficientemente literal como para ast.literal_eval
por ejemplo, una lista de comprensión
src = '[i**2 for i in range(10)]' a = ast.parse(src)
Ahora a.body[0]
es un ast.Expr
y a.body[0].value
un ast.ListComp
. Me gustaría obtener la lista que resultaría eval(src)
, pero dado solo el nodo ast.Expr
.
Tal vez usted está buscando compile()
? El resultado de llamar a compile()
en un objeto AST es un objeto de código que se puede pasar a eval()
.
>>> src = '[i**2 for i in range(10)]' >>> b = ast.parse(src, mode='eval') >>> eval(compile(b, '', 'eval')) [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]