装饰器

在不改变原来函数的调用方式的情况下,在这个函数的前后添加新的功能。

完美地符合了一个开发原则:开放封闭原则

装饰器格式:

 1 from functools import wraps
 2 def wrapper(f):                  # wrapper就是装饰器的意思(可自定义)
 3                                  # 括号里的参数f,永远是被装饰的函数
 4     @wraps(f)                    # 将装饰器返回原形函数
 5     def inner(*args, **kwargs):  # 实际执行函数。参数对应被装饰函数
 6         '''在被装饰函数之前要做的事'''
 7         ret = f(*args, **kwargs) # ★被装饰函数★
 8         '''在被装饰函数之后要做的事'''
 9         return ret
10     return inner
11 
12 
13 @wrapper                         # 装饰器(语法糖) 相当于bignum = wrapper(bignum)
14 def bignum(a, b):                # 被装饰函数
15     '''两个整数比大小'''
16     return a if a > b else b
17 
18 print(bignum(7, 6))
19 print(bignum.__name__)           # 打印函数名
20 print(bignum.__doc__)            # 打印函数注释

 

posted @ 2018-07-15 15:36  宝露  阅读(95)  评论(0)    收藏  举报