function in a function accessing vars

Jorgen Bodde jorgen.maillist at gmail.com
Wed Jun 6 07:40:36 EDT 2007


Hi Diez,

Thanks, I thought it worked similar to C++ where a higher compound
could access a lower section. But as it is not straight forward, I
think it is better to embed the functionality inside a class, and make
it a member variable .. now why didn't I think of that ;-)

Thanks,
- Jorgen

On 6/6/07, Diez B. Roggisch <deets at 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
>



More information about the Python-list mailing list