UnboundLocalError on shadowed import
peter at engcorp.com
Wed Jun 30 14:15:25 CEST 2004
vincent wehren wrote:
> Peter Hansen wrote:
>> It "has to" raise an exception. The use of "sys" inside the function
>> is local (because you assign to it, because "import sys" is effectively
>> an assignment). Locals are not handled quite the same as other names,
>> as you know -- they are turned into index lookups in a list instead of
>> hash lookups in a dictionary. The interpreter can't know that your use
>> of sys.exit(0) is supposed to refer to the global sys, because all uses
>> of "sys" are really just "local variable number 3" or something like
>> that inside the function.
>> Basically, "don't do that" is about the best you'll get, I think.
> Well, just for the sake of it, there still is the obvious option of
> adding the line "global sys" before sys.exit(0) to tell the interpreter
> to use the "globally imported sys".
Which basically amounts to "not doing that". ;-) You're right...
More information about the Python-list