[Python-Dev] Python3 compiled listcomp can't see local var
Xavier de Gaye
xdegaye at gmail.com
Fri Jun 8 12:28:36 EDT 2018
More information about the Python-Dev mailing list
Fri Jun 8 12:28:36 EDT 2018
- Previous message (by thread): [Python-Dev] Python3 compiled listcomp can't see local var - bug or feature?
- Next message (by thread): [Python-Dev] Python3 compiled listcomp can't see local var - bug or feature?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 06/06/2018 03:51 PM, Nick Coghlan wrote: > On 6 June 2018 at 15:31, Rob Cliffe via Python-Dev <python-dev at python.org <mailto:python-dev at python.org>> wrote: > ... > *In other words, it looks as if in Python 3.6.5, the compiled list comprehension** > **can "see" a pre-existing global variable but not a local one.* > > Yes, this is expected behaviour - the two-namespace form of exec (which is what you get implicitly when you use it inside a function body) is similar to a class body, and hence nested functions > (including the implicit ones created for comprehensions) can't see the top level local variables. In issue 13557 [1] Amaury gives the following explanation by quoting the documentation [2] "Free variables are not resolved in the nearest enclosing namespace, but in the global namespace" and hints at the same solution that is proposed by Nick. FWIW in issue 21161 [3] folks have been bitten by this when trying to run a list comprehension in pdb. [1] https://bugs.python.org/issue13557 [2] http://docs.python.org/py3k/reference/executionmodel.html#interaction-with-dynamic-features [3] https://bugs.python.org/issue21161 Xavier
- Previous message (by thread): [Python-Dev] Python3 compiled listcomp can't see local var - bug or feature?
- Next message (by thread): [Python-Dev] Python3 compiled listcomp can't see local var - bug or feature?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list