[New-bugs-announce] [issue6782] Scoping of variables in closures

victor report at bugs.python.org
Tue Aug 25 17:29:11 CEST 2009


New submission from victor <bitto001 at uwp.edu>:

I can't tell if this is "feature" or a "bug" but either way this
behavior struck me as strange.
"""
def func():
  x = 5
  def inc():
    temp = x + 1 # when inc() is execute, this line fails
    x = temp
    return x
  return inc

i = func()
i() # will raise error
"""
It says that x referenced before defined (when computing x + 1). It
seems that the fact that x is assigned in the local inc() that it
shadows the outer x.
Even stranger is that if you remove the the assignment of "x = temp"
there is no error; suggesting the assignment to x anywhere in the inner
function shadows the entire function. 

This is not the expected behavior, so I thought it may be bug.

----------
components: Interpreter Core
messages: 91954
nosy: bitfort
severity: normal
status: open
title: Scoping of variables in closures
type: behavior
versions: Python 2.6

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue6782>
_______________________________________


More information about the New-bugs-announce mailing list