""" File: funarg1.py A function can return a local function as a return value. fgen() below "makes" functions. The returned functions retain their own copies of nonlocal variable a """ def fgen(x): def inc_a(y): nonlocal a return y + a a = x return inc_a add3 = fgen(3) add7 = fgen(7) print( "add3(1) = " + str(add3(1)) ) print( "add7(1) = " + str(add7(1)) ) print( "add3(2) = " + str(add3(2)) ) print( "add7(2) = " + str(add7(2)) ) print( "add3(3) = " + str(add3(3)) ) print( "add7(3) = " + str(add7(3)) )