一、高阶函数
满足下列条件之一为高阶函数
1.某一函数当作参数传入另一个函数中
2.函数的返回值包含n个函数,n>0
高阶函数示范:
def bar(): print 'in the bar' def foo(func): res=func() return res foo(bar)
高阶函数的牛逼之处:
def foo(func): return func print 'Function body is %s' %(foo(bar)) print 'Function name is %s' %(foo(bar).func_name) foo(bar)() #foo(bar)() 等同于bar=foo(bar)然后bar() bar=foo(bar) bar()
二.闭包
闭包
1.闭 函数里面还嵌套了函数
2.包 包含了对外部函数作用域中变量的引用
内部函数包含对外部作用域而非全局作用域名字的引用,该内部函数成为闭包函数。
闭包的作用:
就是能够引用外部函数的变量,并且可以保证外部函数的变量控制在一个局部作用域中。
#闭包的常用形式 def hei(): x = 20 def inner(): print(x) #局部的 return inner # i = hei() # i() #全局
判断闭包函数的方法__closure__
#输出的__closure__有cell元素 :是闭包函数 def func(): name = 'eva' def inner(): print(name) print(inner.__closure__) return inner f = func() f() #输出的__closure__为None :不是闭包函数 name = 'egon' def func2(): def inner(): print(name) print(inner.__closure__) return inner f2 = func2() f2()