day11-15,装饰器

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')
带参数的装饰器(*args,**args)

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、

猜你喜欢

转载自www.cnblogs.com/-xuan/p/9997959.html