Re: accumulator generators
- From: Cameron <cameronlarue@xxxxxxxxx>
- Date: Fri, 30 May 2008 14:53:18 -0700 (PDT)
On May 30, 1:04 pm, "Diez B. Roggisch" <de...@xxxxxxxxxxxxx> 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
.
- Follow-Ups:
- Re: accumulator generators
- From: Hans Nowak
- Re: accumulator generators
- References:
- accumulator generators
- From: Cameron
- Re: accumulator generators
- From: Diez B. Roggisch
- accumulator generators
- Prev by Date: Re: Python 2.5.2 on Ubuntu Hardy Utf-8-Euro error
- Next by Date: Re: Help needed in choosing an algorithm for Cryptographic services.
- Previous by thread: Re: accumulator generators
- Next by thread: Re: accumulator generators
- Index(es):
Relevant Pages
|