function in a function accessing vars
Diez B. Roggisch
deets at nospam.web.de
Wed Jun 6 05:58:18 EDT 2007
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
More information about the Python-list
mailing list