Given an ast node that can be evaluated by itself, but is not literal enough for ast.literal_eval e.g. a list comprehension
src = '[i**2 for i in range(10)]'
a = ast.parse(src)
Now a.body[0] is an ast.Expr and a.body[0].value an ast.ListComp. I would like to obtain the list that eval(src) would result, but given only the ast.Expr node.
Perhaps you're looking for compile()? The result of calling compile() on an AST object is a code object that can be passed to 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]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With