[Python-Dev] more timely detection of unbound locals

Terry Reedy tjreedy at udel.edu
Tue May 10 19:56:58 CEST 2011

On 5/10/2011 10:59 AM, Nick Coghlan wrote:
> On Tue, May 10, 2011 at 11:11 PM, R. David Murray<rdmurray at bitdance.com>  wrote:
>> How about:
>> "reference to variable 'y' precedes an assignment that makes it a local
>> variable"
> For comparison, the error messages I was able to elicit from 2.7 were
> as follows:
> # Module level
> NameError: name 'bob' is not defined
> # Function level reference to implicit global
> NameError: global name 'bob' is not defined
> # Early reference to local
> UnboundLocalError: local variable 'bob' referenced before assignment

I would change this to
"local name 'bob' used before the assignment that makes it a local name"

Calling names 'variables' is itself a point of confusion.
> # Early reference from closure
> NameError: free variable 'bob' referenced before assignment in enclosing scope
> Personally, I would just add "in current scope" to the existing error
> message for the unbound local case (and potentially collapse the
> exception hierarchy a bit by setting UnboundLocalError = NameError).
> Cheers,
> Nick.

Terry Jan Reedy

More information about the Python-Dev mailing list