当前位置: > python教程 > python高级教程 >

Python装饰器入门到深入13--装饰器总结
栏目分类:python高级教程   发布日期:2019年03月04日 15:58:45   浏览次数:

        到此,用了12个章节的内容来讲解装饰器的方方面面了,篇幅虽然说长,但是装饰器任然有许多地方没有叙述到。如果你对装饰器想进行更深入的探索,我会给出未说明的内容,并且也是时候结束装饰器的篇章了。

                                             python教程

说明

1.装饰器虽然说使得函数的意图明显,使用简单,但是你想去阅读装饰器的源码实现说明时,往往过多的嵌套和设计模式的抽象使得阅读不是那么清晰,而且装饰器定义起来繁琐,所以可以使用一些装饰器的第三方库,比如wrapt,会使得装饰器的定义简洁提高可读性,也解决了装饰器带来的各种隐含不可察觉的错误,接下来我会给出wrapt的一个实例:

import wrapt

import time

# wrapt.decorator包装器将函数run_withtime包装注册成为装饰器
@wrapt.decorator
def run_wrapt_time(func, instance, args, kwargs):
    st = time.time()
    res = func(*args, **kwargs)
    print(f'{func.__name__} run_time:{time.time() - st:.3f}s')
    return res

@run_wrapt_time
def myfor():
    for i in range(10000000):
        pass

if __name__ == '__main__':
    myfor()
    '''
    myfor run_time:0.177s
    '''

如果你对wrapt的更多用法感兴趣,移步:https://pypi.org/project/wrapt/

2.内置装饰器classmethod, staticmethod,property的使用

3.装饰器可以叠加使用

4.装饰器在拦截,管理类对象的属性的功能上与元类重叠

 

结语

        装饰器的系列文章终于结束,希望大家有所收获,在python的道路上更加顺利。

相关热词:

热门关键词
python字符串
     
python教程 python爬虫 python人工智能 Python+大数据 python问答