装饰器(Decorator)
装饰器本质是个函数,用来给别的函数增加功能
装饰器可以在代码运行期间动态地增加函数的功能
想要给多个函数增加相同的功能,一个一个地修改效率很低而且可读性差,所以采用装饰器
基础语法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| def 装饰器名(被装饰函数): def 内容函数名(如果被装饰函数有参数那么输入 *args ): XX内容 XX内容 被装饰函数(如果被装饰函数有参数那么输入 *args )
return 内容函数名
@装饰器名 def 被装饰函数(): 内容
直接调用被装饰函数就行
|
例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| import time
def decor1(func): def con(*args): t1 = time.time() fun2_c = func(*args) t2 = time.time() print("run time: {:.2} s".format(t2 - t1)) return fun2_c return con
def fun1(num): if num < 2: return False elif num == 2: return True else: for i in range(2, num): if num % i == 0: return False return True
@decor1 def fun2(maxnum): count = 0 for i in range(2, maxnum): if fun1(i): count = count + 1
return count
print(fun2(10000))
|
参考资料:
python小技巧:装饰器(Decorator)
详解Python迭代器,生成器,装饰器