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