python的装饰器

装饰器是什么?

顾名思义,装饰器就是用来装饰的。例如我们现在想往房子里放些花作为装饰,那会怎么去做呢,获得花,然后将花放在桌上、床上亦或是你想的任何地方。
首先让我们先写个花的装饰器吧,

def flowers(func):	#装饰函数
    def inner(p): 	#内部函数,包含内部函数与需要装饰函数的操作
        print("花"+func(p))	
    return inner	#返回内层的函数给装饰函数。在一些代码编辑器中使用自动补齐时可能会带上括号,记得删掉哦。函数带括号与不带括号的区别这里不做说明。

有了花之后呢,我们就可以用花的装饰器进行装饰啦,

@flowers #调用flower装饰器
def put_flower(p):
    t = "放到" + str(p) +"上"
    return t
    
put_flower("桌子")
put_flower("椅子")    

运行结果:
在这里插入图片描述
从这个过程中可以看出,被装饰函数会作为装饰函数的一部分进行执行。

为什么要用装饰器

还是以花的装饰为例。在现实生活中想要在大house(希望大家都会有)里用花装饰些地方,步骤一般都是会先获得花,然后把它们放在你想要装饰的地方,例如桌子,然后我们就能得到一个装饰着花的桌子。那我们可不可以直接定制一个上面本来就装饰着花的桌子呢?当然可以,不过这样成本就会变高,花花也会与桌子成为一个整体,用胶沾着,用绳子绑着,难以将它与桌子分割,随心所欲地放到其它地方。
在程序中也是如此。我们可以将经常被重复使用的操作写成装饰器,这样只需添加个@装饰器名就能直接使用了,例如鉴权,而无需重复编写,节约了代码量,提高了开发效率。

概念补充

其他语言中相似的应用方式,例如JAVA中的AOP(面向截面编程),设计模式中也有装饰器模式这样的概念,而这些其实都是基于开闭原则的扩展。
开闭原则:英文名Open-Close Principle(OCP),一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。目的就是保证程序的高扩展性,易于维护和升级。
开闭原则被称之为面向对象设计的基石,其他的原则都可以看作为实现开闭原则的方式和手段。其概念通俗来说就是,开发一个软件时,应该具备扩展性,而在进行这些扩展时,不需要对原来的程序进行修改。这样软件的可用性就会非常灵活,扩展性强,不用担心稳定性等问题。我们在设计编写软件,这也是需要去注意的一方面。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值