D20-02装饰器基本理论 03高阶函数
装饰器:本质就是函数,修饰其他函数(为其他函数添加附加功能)
原则:
1、不修改被修饰函数的源代码
2、不修改被修饰函数的调用方式
记录代码运行时间,不重要。
import time
def cal(l):
start_time=time.time() #因为要记录函数的运行时间所以把开始节点放在这里
time.sleep(1)
res = 0
for i in l:
res+=i
stop_time=time.time() #不能放在return下面,那样stop_time不会执行
print('函数运行时间是%s'%(start_time-stop_time))
return res
print(cal(range(100)))
输出结果:
函数运行时间是-1.000183343887329
4950
装饰器只是储备:
装饰器=高阶函数+函数嵌套+闭包
高阶函数
1、函数接受的参数是一个函数名
2、函数的返回值是一个函数名
3、满足上述任意一个都可称之为高阶函数
第一种情况,接收的是函数名
def foo():
print('你好')
def test(func):
print(func) #此步骤中返回值为内存地址
func() #加()可直接执行 即执行foo
test(foo)
打印结果
‘你好’
第二种情况 返回值是函数名
但以下代码多打印一次
def timmer(func):
start_time=time.time()
func()
stop_time=time.time()
print('函数的运行时间是%s'%(stop_time-start_time))
return func
foo = timmer(foo)
foo()
输出结果
from foo
函数的运行时间是1.0006461143493652
from foo

浙公网安备 33010602011771号