Python快速上手系列--装饰器--入门篇

简介: Python快速上手系列--装饰器--入门篇

何为装饰器?

装饰器就是给某一个函数或某一个程序,再不改变它原程序的基础上添加其他的功能.用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数,使用python装饰器的好处就是在不用更改原函数的代码前提下给函数增加新的功能。一起来看看下面的小例子:

def one(an):
    print("进入装饰器")
    def two():
        print("装饰器内部")
        an()
        print("装饰器末尾")
    return two
@one
def three():
    print("我进入装饰器了")
three()

上面这个例子,你大可以理解为两个函数结合起来使用。每个人理解的方式不一样,所以大胆想象。one函数就是一个装饰器,我们可以直接把它用@符号引用在three函数上。此外,an()这个可以看作参数,在two函数中位置不同,对应的输出位置就不听,可以放在print("装饰器末尾")后面或者其他位置。这里其实可以理解为将three函数当作变量,引用到one函数中,然后在two函数中用an()进行调用。最后返回一个函数里面的值。得到的结果就是:

进入装饰器
装饰器内部
我进入装饰器了
装饰器末尾

那么我们接下来看看装饰器的传值

# -->>>清安<<<---
def name(age):
    print("进入装饰器")
    def first_name(a, b):
        print(f"名字是:{a}")
        age(a, b)
        print(f"年龄是:{b}")
    return first_name
@name
def name1(a, b):
    print("报上年龄")
if __name__ == '__main__':
    name1('清安', 18)
# 进入装饰器
# 名字是:清安
# 报上年龄
# 年龄是:18

看这个例子,是不是有点像函数中的位置传参呢。根据上面的小实例,这里理解其实就不难了。接下来看看另一种,传多个参数

# 传多个参数
def name(func):
    def infomation(*args, **kwargs):
        print(f"姓名:{args[0]}")
        print(f"性别:{args[1]}")
        print(f"年龄:{args[2]}")
        func(*args, **kwargs)
    return infomation
@name
def input(a, b, c):
    print("展示完毕")
if __name__ == '__main__':
    input('清安', '男', 18)
# 姓名:清安
# 性别:男
# 年龄:18
# 展示完毕

这里部分需要说明,就是取值的问题,这里传多个值进去,如果不用args[值]的这种方式,那么得到的就是整个元组了。此外,*args, **kwargs这个看着是不是很眼熟,这里前面章节函数部分有写到哦。可以回头看看来。

       后续也会出一些装饰器的用法。及时关注

目录
相关文章
|
2月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
346 7
|
3月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
363 1
|
2月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
251 100
|
3月前
|
设计模式 缓存 监控
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
278 101
|
2月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
155 88
|
3月前
|
缓存 测试技术 Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
227 99
|
3月前
|
存储 缓存 测试技术
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
198 98
|
3月前
|
缓存 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器:优雅地增强函数功能
|
3月前
|
存储 缓存 测试技术
理解Python装饰器:简化代码的强大工具
理解Python装饰器:简化代码的强大工具

推荐镜像

更多