New submission from kolia <[email protected]>:
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 <[email protected]>
<https://bugs.python.org/issue37568>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com