装饰器进阶

Posted hhsh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰器进阶相关的知识,希望对你有一定的参考价值。

from functools import wraps
def wrap1(f):
    @wraps(f)
    def inner1():
        print(inner1() before)
        f()
        print(inner1() after)

    return inner1


def wrap2(f):
    @wraps(f)
    def inner2():
        print(inner2() before)
        f()
        print(inner2() after)

    return inner2


@wrap1  # func = wrap1(inner2),把inner2传进来了
@wrap2  # func = wrap2(func) = inner2     先执行这个,因为离被装饰函数func()最近
def func():
    ‘‘‘
    这里是func
    ‘‘‘
    print(func())

func()
print(func.__name__)            # 返回函数名,如果没有wraps(f)装饰,返回的是inner1而不是func
print(func.__doc__)             # 返回函数的注释

 

以上是关于装饰器进阶的主要内容,如果未能解决你的问题,请参考以下文章

12.前方高能-装饰器进阶

python使用上下文对代码片段进行计时,非装饰器

基础学习之第十二天(装饰器的进阶)

函数进阶(装饰器)

Python进阶第九篇装饰器

测开之函数进阶篇・第七篇《装饰器》