python 装饰器

1***装饰器。

  装饰器基本模板:

 

def warpar(args):
    def dinner(*args,**kwargs):
        #想添加的任何内容
        ret= args(*args,**kwargs)
        #想添加的任何内容
        return ret
    return dinner

func = warpar(func)
def func():
    print('你好~~')#装饰器在不改变原函数的执行的情况下为原函数增加额外的功能

   #装饰器在不改变原函数的执行的情况下为原函数增加额外的功能

2.语法糖@

  利用模板套用之后再需要装饰的函数之上输入@装饰器名

 

def warpar(args):
    def dinner(*args,**kwargs):
        #想添加的任何内容
        ret= args(*args,**kwargs)
        #想添加的任何内容
        return ret
    return dinner

@warpar  #相当与func = warpar(func)
def func():
    print('你好~~')

 

 3.函数有用的信息:

 为函数标注其功能和返回值:

from functools import wraps
def warpper(f):
    @wraps
    def inner():
        '''函数执行之前的操作'''
        ret = f()
        '''函数执行之后的操作'''
        return ret
    return inner

def fun():
    '''
    这个函数的功能是***,参数分别是888,888,其返回值是
    :return:
    '''

print(fun.__name__)
print(fun.__doc__)
#直接显示函数的注释

 4.多个装饰器装饰一个函数:
从上之下再从下至上

def func1(f):   #f = func
    def inner():
        print('3333')
        ret = f()  #f() = func()
        print('4444')
        return ret
    return inner


def func2(f):  #f = inner
    def inner2():
        print('2222')
        ret = f()  #f = inner()
        print('5555')
        return ret
    return inner2


def func3(f):  #f = inner2
    def inner3():
        print('1111')# 执行函数前的操作
        ret = f()  #f = inner2
        print('6666')
        return ret
    return inner3

@func3
@func2
@func1                  
def func():
    print('谁是傻逼')

func()

 

posted @ 2018-04-02 12:16  残烛月夜  阅读(125)  评论(0编辑  收藏  举报