astそれ自体で評価できるがast.literal_eval、リスト内包表記などには十分なリテラルではないノードが与えられた場合
src = '[i**2 for i in range(10)]'
a = ast.parse(src)
今a.body[0]はast.Exprとa.body[0].valueですast.ListComp。結果のリストを取得したいのですが、ノードeval(src)のみが与えられます。ast.Expr
astそれ自体で評価できるがast.literal_eval、リスト内包表記などには十分なリテラルではないノードが与えられた場合
src = '[i**2 for i in range(10)]'
a = ast.parse(src)
今a.body[0]はast.Exprとa.body[0].valueですast.ListComp。結果のリストを取得したいのですが、ノードeval(src)のみが与えられます。ast.Expr
おそらくあなたは探していcompile()ますか?AST オブジェクトを呼び出しcompile()た結果は、 に渡すことができるコード オブジェクトです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]