您的位置:首页 > 编程语言 > Python开发

python装饰器的实现原理

2018-11-23 16:32 141 查看

装饰器的作为是在原函数的基础上,对原函数增加一切功能。
但是只能在原函数整体之前,或者整体之后修改。无法再原函数内部修改。

实现原理如图,其中test1 = set_func(test1)
相当于改变了test1 变量的指向(从指向原test1函数) 改变为指向右侧的call_func()函数。
并且原来call_func()函数中 func 会指向原test1函数 .
这样就实现了不改变原函数内部代码结构的前提下,进行了增加新功能目的。

为了优化代码,我们将
test1 = set_func(test1) 由 @set_func关键字来替代。
这样就是装饰器就出现了。


当一个函数有多个装饰器时,程序运行前装饰的顺序是由下到上,
而程序的执行过程是由上至下。
结果如下图

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: