03 函数定义装饰器
前面讲解了装饰器的一些概念和装饰器会用到的函数的知识,接下来讲解装饰器的定义,有两种方式可以定义装饰器一种是通过函数定义,一种是通过类定义。
001函数定义装饰器
(1)装饰器定义
如何定义
装饰器名称本身是一个函数,定义时候类似函数一样定义
装饰器需要修饰另外一个函数,所以装饰器需要一个传入一个函数作为参数
装饰器内部再定义一个函数用于对传递进来的函数进行装饰的,定义一个函数wrapper(*args, **kwargs)——相当于任何函数任何参数都可以通配,函数wrapper()就是对传入装饰器的func函数进行修改或者封装
装饰器内部函数返回装饰后的结果
装饰器本身返回内部函数对象(因为没有括号,所以不是内部函数执行结果),函数p_decorator()返回的是函数的对象wrapper不是wrapper的结果
(2)装饰器应用:用到某个函数上面
有两种方式:一种是用@方式,一种是类似函数调用方式,建议用第一种
该装饰器需求是:在返回字符串外面加一个p标签
方式一:
方式二:了解
(3)另一个例子:文本变大写