8月31日学习内容整理:装饰器

补充:

1、print(func._ _name_ _)   这样就会打印func本身的名字,只有一个func就会打印内存地址

2、不要用已知函数名或者方法名来命名变量

今天内容:

1、装饰器:本质就是闭包函数,功能就是在不改变原函数的功能和调用的前提下,对原函数进行扩展

2、装饰器基本结构:

def wrapper(func): #wrapper装饰器的名字
    def inner(*args,**kwargs):
        #print('被装饰的函数执行之前你要做的事儿')
        print('你正在调用%s函数'%func.__name__)
        ret = func(*args,**kwargs)   #被装饰的函数
        #print('被装饰的函数执行之后你要做的事儿')
        return ret
    return inner

@wrapper     要执行的函数名 = wrapper(要执行的函数名)

 

注意的点:

(1)使用者在调用函数时,实际上对于装饰器来说是调用的inner,所以函数和inner的参数要一样

(2)函数有返回值就在inner里赋值返回即可

(3)对于装饰器wrapper函数名来说,参数必须是inner里调用的函数名即func,因为语法糖的含义就是把wrapper(函数名)赋值给函数名

(4)@wrapper叫语法糖

3、开放封闭原则

(1)开放:对扩展是开放的

(2)封闭:对修改是封闭的,不能对已经改好的功能进行修改

posted @ 2017-08-31 14:37  九二零  阅读(76)  评论(0)    收藏  举报