本文介绍Python其中一个强大的功能--装饰器
装饰器本质上就是一个函数,在不修改源代码,调用方法的前提下,用来给其他函数添加功能的函数
想象一下,你已经开发完成一个功能,并且投入应用中,却发现函数少些功能,怎么办?
修改函数源代码已经不太可能,不能修改函数代码,函数调用方法来实现增加函数功能,这时,装饰器就该登场了
知识要求 : 高阶函数,内嵌函数
先看一个函数:
def
test1():
print(‘-----in the test1 -----‘)
可以说是一个最简单的函数,现在在不修改函数源代码,不修改调用方法前提下,增加打印一个语句hello world,怎么加?
我们需要再次定义一个函数:而这个函数,就是一个最简单的装饰器:
1
def
warpper(func):
2
def
inner():
3
print(‘hello world‘)
4 func()5return inner
warpper函数内嵌inner函数,最后返回inner函数,可是,这个函数怎么用呢?
你肯定已经看出来warpper函数参数是一个函数,在inner函数内部进行调用
所以,我们可以这样用:
warpper(test1)
但是这样肯定不行的,返回值是一个函数的引用,所以需要用一个变量名来存储,然后加上小括号调用
func = warpper(test1)
func()
# -------------output( hello world n hello jeden )
这就完成了函数的装饰, 但是调用方法改变了,原来的test1改成了func(),所以做以下修改:
func() = warpper # 改成 test1 = warpper(test1) func() # 改成test1()
已经完成了大半了,最后用python提供的语法糖就行了
类似与这样 -- @function_name
#
第一过程最终代码展示
def
warpper(func):
def
inner():
print(‘hello world‘)
func()
return inner
@warpper
def test():
print(‘hello jeden‘)
test()
这就是最简单的装饰器案例。
原文:https://www.cnblogs.com/jedenzhan/p/8683476.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!