New submission from Domen Jurkovič <domen.jurko...@gmail.com>: I've reported a stack overflow question and no reasonable explation was offered. Here is what I've discovered: .. code-block:: python def func(): varName = 'bar' varValue = 42 localVarToEvaluate = varName + ' = varValue'
try: exec(localVarToEvaluate) except Exception as err: print(str(err)) if 'bar' in locals(): # print(locals()['bar']) # (1) OK # print(bar) # (2) ERR #print("'bar' OK:", bar) # (3) ERR pass # uncomment any line above func() After ``exec()`` is executed, ``bar`` can be seen in ``locals()``, but not accessible by intereter. Also, It can be accessed by directly calling ``print(locals()['bar'](``, but not ``print(bar)``. This is the problem as long as the code is wrapped in function. If the same code is placed in the module body, works as expected. Is there any exaplanation for such behaviour, or is this a bug? ---------- components: Interpreter Core, Windows messages: 338812 nosy: paul.moore, schperplata, steve.dower, tim.golden, zach.ware priority: normal severity: normal status: open title: exec() issue when used inside function type: behavior versions: Python 2.7, Python 3.5, Python 3.6, Python 3.7 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue36426> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com