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