需要理解的三个方面:
1、函数即"变量“
2、高阶函数
a 把函数名当做实参传给另一个函数(在不修改被装饰函数源代码的情况下进行功能扩展)
b 返回值中包含函数名(不修改函数的调用方式)
3、嵌套函数:函数里面用def声明另一个函数
高阶函数+嵌套函数=》装饰器
一、未使用装饰器:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
def timmer(func):
def deco(*args,**kwargs):
time_start = time.time()
func(*args,**kwargs)
time_end = time.time()
print('耗费时间——%s' % (time_end-time_start))
return deco
def test1():
time.sleep(1)
print('test 1')
test1 = timmer(test1)
test1()
返回:
test 1
耗费时间——1.0010290145874023
二、使用装饰器代码如下:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
def timmer(func):
def deco(*args,**kwargs):
time_start = time.time()
func(*args,**kwargs)
time_end = time.time()
print('耗费时间——%s' % (time_end-time_start))
return deco
@timmer
def test1():
time.sleep(1)
print('test 1')
#test1 = timmer(test1)
test1()