I want to execute a correct Python program using exec() and then get variables and their values after executing. Google says that I should create a dictionary and write the result of execution there: exec(code_object) in variables. But unfortunately that doesn't in Python 3.
-
possible duplicate of Behaviour of exec function in Python 2 and Python 3Martijn Pieters– Martijn Pieters2015-01-12 14:19:30 +00:00Commented Jan 12, 2015 at 14:19
Add a comment
|
1 Answer
The code in Python 3 should be:
exec(code_object, variables)
This syntax is also Python 2 compatible.
exec(code_object) in variables
would compile and run in Python 3 but do something completely different from Python 2 - it would execute the code_object in current scope; the exec would return None; then the expression None in variables would evaluate False since None is not a key in variables; the result would be dropped - thus neither compile time nor possibly run-time error occurs, except for code_object seeing the wrong scope.