New submission from kolia <kolia.sade...@gmail.com>:
def outer(a): def inner(): print(a) a = 43 return inner t = outer(42) print(t()) Outputs: ~/Documents/repro.py in inner() 1 def outer(a): 2 def inner(): ----> 3 print(a) 4 a = 43 5 return inner UnboundLocalError: local variable 'a' referenced before assignment This is misleading, since `a` is actually in scope on line 3. What is making it fail is the assignment on line 4, since `a` has not been declared `nonlocal`. Instead, the error should point to line 4 and report an illegal assignment to a read-only closure variable. ---------- components: Interpreter Core messages: 347703 nosy: kolia priority: normal severity: normal status: open title: Misleading UnBoundLocalError on assignment to closure variable type: compile error versions: Python 3.6 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue37568> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com