UnboundLocalError on shadowed import
vincent wehren
vincent at visualtrans.de
Wed Jun 30 05:10:57 EDT 2004
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".
--
Vincent Wehren
More information about the Python-list
mailing list