New submission from Andrej Klychin <andy...@bk.ru>:

I'm not sure is it a bug or a fecature of comprehensions or eval, but 
intuitively it seems like it should work.

def foo(baz):
    return eval("[baz for _ in range(10)]")

foo(3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in foo
  File "<string>", line 1, in <module>
  File "<string>", line 1, in <listcomp>
NameError: name 'baz' is not defined

def bar(baz):
    return eval("{i: baz for i in range(10)}")

bar(3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in bar
  File "<string>", line 1, in <module>
  File "<string>", line 1, in <dictcomp>
NameError: name 'baz' is not defined

----------
components: Interpreter Core
messages: 373054
nosy: Andy_kl
priority: normal
severity: normal
status: open
title: eval don't load local variable in dict and list comprehensions.
type: behavior
versions: Python 3.9

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue41216>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to