PYTHON基础知识学习笔记(十三)

装饰器

概述

装饰器是用来管理和增强函数和类行为的代码,可以提供一种在函数或类定义中插入自动运行代码的机制。
特点
1、更明确的语法;
2、更高的代码可维护性;
3、更好的一致性。

编写

函数基础

1、将函数赋给变量;
2、将函数作为参数传递;
3、函数嵌套及跨域访问。

函数定义装饰器

可以通过定义函数实现装饰器功能,既可以对函数进行装饰,也可以对类中的方法进行装饰。
例:定义一个装饰器,对函数的返回结果进行装饰,即在返回结果两端添加指定字符
1、定义装饰器及函数:

#装饰器
def p_decorator(func):
    def wrapper(*args,**kwargs):
        return '<p>' + func(*args,**kwargs) + '</p>'
    return wrapper

#一个有返回结果的函数
def get_text():
    return '欢迎学习python'

2、将函数作为参数传递:

if __name__ == '__main__':
    print(p_decorator(get_text)())

#运行结果
<p>欢迎学习python</p>

3、使用装饰器语法:

@ p_decorator
def get_text():
    return '欢迎学习python'

if __name__ == '__main__':
    print(get_text())

#运行结果
<p>欢迎学习python</p>

类定义装饰器

也可以通过定义类实现装饰器功能,只可以对函数进行装饰,不能对类中的方法进行装饰。
例:和上文需要实现功能一样
定义装饰器及函数:

#装饰器
class P:
    def __init__(self,func):
        self.func = func
    def __call__(self,*args,**kwargs):
        return '<p>' + self.func(*args,**kwargs) + '</p>'

@P
def get_text():
    return '欢迎学习python'

#运行结果
<p>欢迎学习python</p>

装饰器参数

可以通过参数让装饰器变得更加通用。
例:只定义一个函数装饰器,每次运行时可以按需要对函数结果做不同的装饰
1、定义装饰器及函数:

#装饰器
def tags(tag):
    def tag_decorator(func):
        def wrapper(*args,**kwargs):
            return f'<{tag}>{func(*args,**kwargs)}</{tag}>'
        return wrapper
    return tag_decorator

#一个有返回结果的函数
def get_text():
    return '欢迎学习python'

2、使用装饰器语法对函数返回结果进行指定修饰
两端加

@tags('p')
def get_text():
    return '欢迎学习python'

if __name__ == '__main__':
    print(get_text())

#运行结果
<p>欢迎学习python</p>

两端加

@tags('div')
def get_text():
    return '欢迎学习python'

if __name__ == '__main__':
    print(get_text())

#运行结果
<div>欢迎学习python</div>

3、可以叠加修饰

@tags('div')
@tags('p')
def get_text():
    return '欢迎学习python'

if __name__ == '__main__':
    print(get_text())

#运行结果
<div><p>欢迎学习python</p></div>

未完待续!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值