本文摘自php中文网,作者不言,侵删。
本篇文章给大家带来的内容是关于python装饰器是什么?怎么用?有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。在学习python过程中,相信大家对装饰器的概念很模糊,我也是困惑了很久,决定写一篇文章梳理一下。
首先要搞清楚什么是装饰器:
简单来说,可以把装饰器理解为一个包装函数的函数,在函数运行时增加功能但不影响这个函数原有内容,还可以进行函数执行后的清理工作。
举一个小例子
1 2 3 |
|
装饰器做的事情就是func1(func2)
传递了一个函数对象到我们的装饰器里面然后先执行装饰器func1
其中的内容,然后再执行函数func2
。
比如举一个普通装饰器的例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
在这段代码中func2()相当于func1(func2)()->add_func(),再想要执行func2()函数时,先执行装饰器func1()函数,并且参数func相当于func2()。执行func1函数时由于返回值是add_func,我们执行的是func1(func2)(),也就相当于执行add_func(),输出
'这是我添加的功能',返回一个func()函数,也就是参数func的调用,即对应的func2函数的调用。
装饰器的基本框架
1 2 3 4 5 |
|
进阶
来一个带参数的装饰器吧
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
自这段代码中被装饰函数的参数传递到装饰函数的变量中,也就是x
传递给了a
,y
传递给了b
,return func(a,b)
即调用了func
函数并且函数的参数为a
和b
。
再高级一点的 装饰器函数带参数 (哈哈,是不是感觉有点懵了)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
这段代码其实很简单,就是装饰器多了一个参数用来判断,看上去也很好理解。同样,执行func装饰器接收函数(arg_func)的参数是bad,执行func1函数,装饰器接收函数的参数是good
以上就是python装饰器是什么?怎么用?的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
更多相关阅读请进入《Python》频道 >>

Python编程 从入门到实践 第2版
python入门书籍,非常畅销,超高好评,python官方公认好书。