Convertir un nodo ast en objeto python

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]