day11
1、装饰器
1 import time 2 # print(time.time()) # 点数前边是从1970年到现在过了多少秒 3 # time.sleep(10) # 让程序执行到这里停一会儿 4 5 6 # 7 # # print(time.time()) # 点数前边是从1970年到现在过了多少秒 8 # # time.sleep(10) # 让程序执行到这里停一会儿 9 # 10 # 11 # # 增加功能 12 # def timer(f): # 装饰器函数 13 # def inner(): 14 # start = time.time() 15 # ret = f() # 被装饰的函数 16 # end = time.time() 17 # print(end - start) 18 # return ret 19 # return inner 20 # @timer # 语法糖,不用下边的那个调用函数 21 # def func(): 22 # time.sleep(1) 23 # print('大家哈') 24 # return '新年好' 25 # 调用函数 26 # func = timer(func) 27 28 29 # print(func()) 30 31 # 原则:开放封闭原则 32 # 开放:对扩展是开放的 33 # 封闭:对修改是封闭的
2、带参数的函数装饰器
1 # 装饰带参数函数装饰器 2 # def timer(f): # 装饰器函数 3 # def inner(*args, **kwargs): 4 # start = time.time() 5 # ret = f(*args, **kwargs) # 被装饰的函数 6 # end = time.time() 7 # print(end - start) 8 # return ret 9 # 10 # return inner 11 # 12 # 13 # @timer # 语法糖,不用下边的那个调用函数 14 # def func(a, b): 15 # time.sleep(1) 16 # print('大家哈', a, b) 17 # return '新年好' 18 # 19 # 20 # @timer 21 # def funcl(a): 22 # time.sleep(1, ) 23 # print('大家哈', a) 24 # return '新年好' 25 # 26 # 27 # func('你好', b=8) 28 # funcl('hello')
3、装饰器的固定模式
1 # 固定模式 2 3 def wrapper(f): # 装饰器函数,fhi被装饰的函数 4 def inner(*args, **kwargs): 5 '''在被装饰函数之前要做的事''' 6 ret = f(*args, **kwargs) # f是被装饰的函数 7 '''在被装饰函数之后要做的事''' 8 return ret 9 return inner 10 11 12 @wrapper # 语法糖,不用下边的那个调用函数 13 def func(a, b): 14 time.sleep(1) 15 print('大家哈', a, b) 16 return '新年好'
day12
1、