[Python-Dev] Python3 compiled listcomp can't see local var - bug or feature?
rob.cliffe at btinternet.com
Tue Jun 12 04:38:47 EDT 2018
Ah yes, I see what you mean:
x = 1
print (x) # Prints 1
print([x+i for i in range(1,3)]) # NameError (x)
Anyway, I apologise for posting to Python-Dev on was a known issue, and
turned out to be more me asking for help with development with Python,
rather than development of Python. (My original use case was a
scripting language that could contain embedded Python code). Thanks to
Nick for his original answer.
On 11/06/2018 23:31, Eric Fahlgren wrote:
> On Mon, Jun 11, 2018 at 3:10 PM Rob Cliffe via Python-Dev
> <python-dev at python.org <mailto:python-dev at python.org>> wrote:
> Skip, I think you have misunderstood the point I was making. It was
> not whether the loop variable should leak out of a list
> Rather, it was whether a local variable should, so to speak, "leak
> a list comprehension. And the answer is: it depends on whether
> the code
> is executed normally, or via exec/eval. Example:
> def Test():
> x = 1
> print([x+i for i in range(1,3)]) # Prints [2,3]
> exec('print([x+i for i in range(1,3)])') # Raises NameError (x)
> I (at least at first) found the difference in behaviour surprising.
> Change 'def' to 'class' and run it again. You'll be even more
> Virus-free. www.avg.com
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Python-Dev