一:高阶函数的定义:
1)函数接受的参数是一个函数名
2)函数的返回值是一个函数名
3)满足上述条件任意一个,都可称之为高阶函数
二:示例
#函数的参数是个函数名
import time
def foo():
print("nihao")
def test(func):
print(func)
start_time = time.time()
func()
stop_time = time.time()
print("函数的运行时间是 %s" %(stop_time-start_time))
test(foo)
三:
#想要为foo加上新共能,不修改源代码
import time
def foo():
time.sleep(3)
print("来自foo")
#不修改foo源代码
#不修改foo调用方式
def timer(func):
star_time = time.time()
func()
stop_time = time.time()
print("函数运行时间是:%s" %(stop_time-star_time))
return func
foo=timer(foo)
foo() #保证函数的调用方式不被改变
#上面这段代码多运行了一次,不合格,
#结论:高阶函数自己满足不了装饰器