#高阶函数定义:
#1.函数接受的一个参数是一个函数名
#2.函数的返回值是一个函数名
#3.满足上述条件任意一个,都可以称为高阶函数
#装饰器:本质就是函数,功能是为其他函数添加附加功能
#原则:1.不修改被装饰函数的源代码 2.不修改被修饰函数的调用方式
#装饰器=高阶函数+函数嵌套+闭包
import time
# def test(func):
# print(func)
# start=time.time()
# func()
# end=time.time()
# print("运行时间%s"%(end-start))
#
# def foo():
# time.sleep(2)
# print("你好")
#
# test(foo)
# def foo():
# time.sleep(2)
# print("from the foo")
# def test(func):
# return func
#
# foo=test(foo)
# start=time.time()
# foo()
# end=time.time()
# print("执行时间%s"%(end-start))
#多运行了一次
# import time
# def foo():
# time.sleep(3)
# print("来自foo")
#
# #不修改foo源代码
# #不修改foo调用方式
#
# def timer(func):
# start=time.time()
# func()
# end=time.time()
# print("执行时间%s"%(end-start))
# return func
# foo=timer(foo)
# foo()
import time
def foo():
time.sleep(3)
print("来自foo")
#不修改foo源代码
#不修改foo调用方式
def timer(func):
return func
foo=timer(foo)
start=time.time()
foo()
end = time.time()
print("执行时间%s" % (end - start))