Huayang Xia kirjoitti: > It will print 15. The closure gets the value at run time. > > Could we treat closure as part of the external function and it shares > the local variable with its holder function? >
I don't quite get what you are trying to tell us but if you think that in your example code: def testClosure(maxIndex) : def closureTest(): return maxIndex maxIndex += 5 return closureTest() print testClosure(10) you are returning a callable function you are all wrong. This can be easily seen by: >>> type(testClosure(10)) 15 <type 'int'> The mistake is that you shouldn't return closureTest() but closureTest instead. The correct way would be: >>> def testClosure2(maxIndex): def closureTest(): return maxIndex maxIndex += 5 return closureTest >>> f2 = testClosure2(10) <function closureTest at 0x00D82530> >>> type(f2) <type 'function'> >>> print f2() 15 Cheers, Jussi -- http://mail.python.org/mailman/listinfo/python-list