python装饰器

1、为什么要用装饰器

软件的设计应该遵循开放封闭原则,即对扩展是开放的,而对修改是封闭的。
简而言之,人家写好的并且能平稳运行的代码千万不要手贱的去动,谁知道你动了程序会不会崩溃!!!


所以当项目有了新需求的时候如何在不动原始代码的情况下添加新功能呢?看题目呀!!!

 

 2、装饰器

函数装饰器分为:无参装饰器和有参装饰两种,二者的实现原理一样,都是’函数嵌套+闭包+函数对象’的组合使用的产物。
简而言之,就是强行给原函数写个爹再加个爷,通过他爷调他爹再找他,达到截胡的目的。

别的不多说,咱们直接上语法糖(PS:毕竟谁放着语法糖不用呢),语法糖的书写格式是: @装饰器名字。

让我来举个栗子

# 需要实现一个功能:
# 在发表评论之前,添加一个"已进行登录验证"

# 定义装饰器
# 如果闭包函数的参数有且只有一个并且是函数类型,那么这个闭包函数称为装饰器
def decorator(func):
    def inner():
        # 在内部函数里面对已有的函数进行装饰
        print('已进行登录验证...')
        func()

    # 返回内部函数
    return inner


# 先定义一个函数
# 使用语法糖的方法对 comment 函数进行装饰
# 此代码相当于 comment = decorator(comment)
# 对函数进行装饰后,comment = inner
@decorator
def comment():
    print('发表评论...')


# 调用定义的函数
comment()

好吧,这个是别人的例子,写的文章老好了,快去看呀!!!

[Python]装饰器_萤火虫的小尾巴的博客-CSDN博客_python 装饰器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值