On 6/6/07, Diez B. Roggisch <d@nospam.web.de> wrote:
> Jorgen Bodde wrote:
> > Hi all,
> > I wanted to solve a small problem, and I have a function that is
> > typically meant only as a function belonging inside another function.
> >>From the inner function I want to access a variable from the outer
> > function like;
> > def A():
> > some_var = 1
> > def B():
> > some_var += 1
> > B()
> > But this does not work, the function B does not recognize the
> > some_var. In my mind I thought the scope would propagate to the new
> > function and the vars would still be accessible.
> > How can I go about this?
> The problem here is the way python determines which variables are local to a
> function - by inspecting left sides.
> I'm not sure if there are any fancy inspection/stackframe/cells-hacks to
> accomplish what you want. But the easiest solution seems to be a
> (admittedly not too beautiful)
> def A():
> some_var = [1]
> def B(v):
> v[0] += 1
> B(some_var)
> Or you should consider making A a callable class and thus an instance, and
> some_var an instance variable. Always remember: "a closure is a poor
> persons object, and an object is a poor mans closure"
> Diez
> --
> http://mail.python.org/mailman/listinfo/python-list