Okay. So my question is simple: How can I assign the value of a variable using eval in Python? I tried eval('x = 1')
but that won't work. It returns a SyntaxError. Why won't this work?
84
votes
What are you trying to do? Whatever you are doing you should not use eval.
- babsher
Disagree, eval has tons of great uses
- Joshua
4 Answers
128
votes
Because x=1
is a statement, not an expression. Use exec
to run statements.
>>> exec('x=1')
>>> x
1
By the way, there are many ways to avoid using exec
/eval
if all you need is a dynamic name to assign, e.g. you could use a dictionary, the setattr
function, or the :locals()
dictionary
>>> locals()['y'] = 1
>>> y
1
Update: Although the code above works in the REPL, it won't work inside a function. See Modifying locals in Python for some alternatives if exec
is out of question.
15
votes
0
votes