On May 30, 1:04 pm, "Diez B. Roggisch" <[EMAIL PROTECTED]> wrote: > Cameron schrieb: > > > > > I was reading this <a href="thishttp://www.paulgraham.com/icad.html">Paul > > Graham article</a> and he builds an accumuator generator function in > > the appendix. His looks like this: > > > <pre> > > def foo(n): > > s = [n] > > def bar(i): > > s[0] += i > > return s[0] > > return bar > > </pre> > > > Why does that work, but not this: > > > <pre> > > def foo(n): > > s = n > > def bar(i): > > s += i > > return s > > return bar > > </pre> > > Because python's static analysis infers s as being a variable local to > bar in the second case - so you can't modify it in the outer scope. > > In the future, you may declare > > def bar(i): > nonlocal s > ... > > Diez
thanks for the response. Just to make sure I understand- Is the reason it works in the first case because s[0] is undefined at that point (in bar), and so python looks in the outer scope and finds it there? Cameron -- http://mail.python.org/mailman/listinfo/python-list