Python装饰器简介

装饰器的作用

  1、在不改变原函数代码的基础上对原函数执行前后添加功能

  2、使代码简洁,增加代码复用性

装饰器原理

 

 1 # 使用的是函数的闭包原理 , 没有改变函数的调用方式,可以对函数添加功能
 2 def wrapper(fn):
 3     def inner(*args, **kwargs):
 4         print("在执行函数前")
 5         fn(*args, **kwargs)
 6         print('在执行函数后')
 7 
 8     return inner
 9 
10 
11 def main_func(*args):
12     print(*args)
13 
14 
15 main_func = wrapper(main_func)
16 
17 main_func('执行主函数')

 装饰器语法糖

   使用 @函数名 来代替了   main_func = wrapper(main_func) 

 1 def wrapper(fn):
 2     def inner(*args, **kwargs):
 3         print("在执行函数前")
 4         fn(*args, **kwargs)
 5         print('在执行函数后')
 6 
 7     return inner
 8 
 9 @wrapper   # main_func = wrapper(main_func)
10 def main_func(*args):
11     print(*args)
12     
13 main_func('执行主函数')

 

posted @ 2018-08-13 19:38  catern  阅读(156)  评论(0编辑  收藏  举报