loading...

Is there a way to pass an object to ast.literal_eval to give it variables?

PDS OWNER CALIN (Calin Baenen) on February 24, 2020

I am working on a small parser, and I want to evaluate values, but I was wondering if I could give it an object with variables (through key and val... [Read Full]
markdown guide
 

Have you looked at the eval function? It evaluates any python expression, so it for sure does the second thing you asked for. I did not really understand your first example, so if eval doesn't work I would need some more explanation of what you are trying to do. Hope it helps :)

 

What I mean, is ast.literal_eval is meant to be a safe version of eval right? Well, take eval, and be able to pass it to it, similar to this:


Python AST Literal Eval

literal_eval("#safe expression e.g. 1*5#")



My Idea:

new_eval("x*y",{
    "x": 4,
    "y": 3
}) # Should return 12
 

So the problem with literal_eval is that it only supports literals. Literals are things like writing a number, string, lists or tuples using their respective syntax. However, you are correct in eval being very unsafe.

I found this project which might be useful or work as inspiration, as it is MIT licensed: github.com/danthedeckie/simpleeval

code of conduct - report abuse