How do nested functions work in Python?

后端 未结 9 500
春和景丽
春和景丽 2020-12-01 04:50
def maker(n):
    def action(x):
        return x ** n
    return action

f = maker(2)
print(f)
print(f(3))
print(f(4))

g = maker(3)
print(g(3))

print(f(3)) # stil         


        
9条回答
  •  青春惊慌失措
    2020-12-01 05:42

    One use is to return a function that maintains a parameter.

    def outer_closure(a):
        #  parm = a               <- saving a here isn't needed
        def inner_closure():
            #return parm
            return a              # <- a is remembered 
        return inner_closure
    
    # set parm to 5 and return address of inner_closure function
    x5 = outer_closure(5)
    x5()
    >5
    
    x6 = outer_closure(6)
    x6()
    >6
    
    # x5 inner closure function instance of parm persists 
    x5()
    >5
    

提交回复
热议问题