1.返回函数:把函数作为结果值返回
例
def lasy_sum(*args):
def sum():
ax=0
for n in args:
ax=ax+n
return ax
return sum #返回函数
f=lasy_sum(1,5,6,6,6,6)
f() #调用函数才真正计算结果
###返回函数不能引用任何循环变量或者会发生变化的变量
2.匿名函数
lambda x: x*x
冒号前X表示函数参数,只能有一个表达式,结果及返回值
匿名函数也可以作为返回值返回
def A(x)
return lambda x:x*x
3.装饰器
在代码运行期间动态增加功能的方式(Decorator)本质上是一个返回函数的高阶函数
import time, functools
def metric(fn):
@functools.wraps(fn)
def wapper(args,**kw):
print('%s executed in %s ms' % (fn.__name__, 10.24))
return fn(args,**kw)
return wapper
@metric
def test(fn):
time.sleep(0.0012)
print('%s executed in %s ms' % (fn.name, 1024))
f = test