[issue6833] incorrect: failed local variable referenced before assignment
Mark Dickinson
report at bugs.python.org
Thu Sep 3 13:44:38 CEST 2009
Mark Dickinson <dickinsm at gmail.com> added the comment:
This is not a bug. The behaviour you're seeing is described here:
http://docs.python.org/reference/executionmodel.html#naming-and-binding
"If a name binding operation occurs anywhere within a code block, all
uses of the name within the block are treated as references to the
current block. This can lead to errors when a name is used within a
block before it is bound. This rule is subtle. Python lacks declarations
and allows name binding operations to occur anywhere within a code
block. The local variables of a code block can be determined by scanning
the entire text of the block for name binding operations."
In the failing example, the registerdecorator function contains an
assignment to in_std, so by the rules above in_std is local to the
function. The 'if in_std' line therefore tries to lookup 'in_std' in
the local namespace; it doesn't exist (yet), so an UnboundLocalError
exception occurs.
----------
nosy: +marketdickinson
resolution: -> invalid
status: open -> closed
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue6833>
_______________________________________
More information about the Python-bugs-list
mailing list