This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author kolia
Recipients kolia
Date 2019-07-11.19:34:48
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1562873689.17.0.696922314347.issue37568@roundup.psfhosted.org>
In-reply-to
Content
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.
History
Date User Action Args
2019-07-11 19:34:49koliasetrecipients: + kolia
2019-07-11 19:34:49koliasetmessageid: <1562873689.17.0.696922314347.issue37568@roundup.psfhosted.org>
2019-07-11 19:34:49kolialinkissue37568 messages
2019-07-11 19:34:48koliacreate