三分钟搞懂什么是Python装饰器

本文以初学者的角度介绍了Python装饰器的概念,通过实例展示了如何使用装饰器在不修改原有函数代码的情况下,为其添加额外功能,如在函数调用前后打印分隔符。文中通过逐步讲解,解释了如何定义和使用装饰器,以及@符号在装饰器中的作用,旨在帮助读者理解这一强大的编程工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三分钟搞懂什么是装饰器


装饰器,顾名思义,装饰某个东西的嘛。但是,装饰的是个啥的,就是一个函数啦,但可不是装饰它让它变得好看,而是在不修改函数的前提下,为函数添加功能

在这里,我想实现一个能够输出’Hello World’的函数,是不是应该这样写。

def hello():
    print("Hello World")

hello()

这时我想到了一个绝妙的点子,为了好看,我要在’Hello World’的前后加上分隔符,那是不是应该这样改一下。

def hello():
    print("---")
    print("Hello World")
    print("---")

hello()

但这时有个问题了,这里我只有一个函数,如果我有一千个函数呢,一个一个改吗?那未免太麻烦了,如果再改坏了函数,那我直接螺旋升天了。这时为了避免这些问题,我们就需要用到装饰器啦。

def 分隔符(function):  #为了便于理解就用中文函数了
    def 装饰器():
        print("---")
        function()    #把传进来的参数当做函数来调用
        print("---")
    return 装饰器  #函数也是可以返回的

def hello():
    print("Hello World")

hello2 = 分隔符(hello)()

这时是不是可以改成这样了?不不不,装饰器这样只是点到为止,我们可以把第二个函数改成这样。

@分隔符
def hello():
    print("Hello World")

hello()

这个@用来告诉解释器,调用这个函数时,不必来找hello()了,来找它的"秘书"分隔符(),这样就实现了不改变函数本身来为函数添加功能。

第一次写博客,写的不好请见谅,救救我这个刚上初一的小朋友吧,谢谢大家。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值