free variables /cell objects question

Duncan Booth duncan.booth at invalid.invalid
Tue Jan 23 13:11:31 CET 2007


"gangesmaster" <tomerfiliba at gmail.com> wrote:

> what problem does the cell object solve? 

The closure represents the variable, not the object. So if x is rebound to 
a different object your inner function g() will now access the new object. 
If the object itself was passed to MAKE_CLOSURE then g would only ever see 
the value of x from the instant when g was defined.

>>> def f(x):
    def g():
        print "x is", x
    g()
    x += 1
    g()

	
>>> f(1)
x is 1
x is 2




More information about the Python-list mailing list