python装饰器理解

装饰器分为类装饰器和方法装饰器,是用来拓展原有函数或类功能的装饰函数
原理是将原有函数或类型作为参数传入装饰器,装饰器中会在原有函数前后加上其他功能,此过程类似进行装饰,并利用闭包将新函数返回,等待主函数调用。

装饰器的作用是可以不改变原有函数代码和调用方式的情况下,对函数功能进行拓展
装饰器代码示例如下:

'''
使用装饰器构造登录检测功能
vip等级判断功能
打印支付结果功能
date:2022/4/4
'''

def login(func):
    def inner(*args,**kwargs):
        if accont['is_authenticated'] == False:
            username = input("user:")
            password = input("password:")
            if username == accont['username'] and password == accont['password']:
                print("---welcome login----")
                accont['is_authenticated'] = True
                func(*args,**kwargs)
            else:
                print("wrong username or password!")
        else:
            print("用户已登录,验证通过")
            func(*args,**kwargs)
    return inner

def pay_money(func):
    def inner(*args,**kwargs):
        func(*args,**kwargs)
        print("已充值")
    return inner

def home():
    print("---首页----")

@login
def america():
    print("---欧美专区----")

@login
def japan():
    print("---日韩专区----")

@login
@pay_money
def henan(vip_level):
    print("---河南专区----")
    if vip_level > 3:
        print("解锁本专区高级玩法")


if __name__ == '__main__':
    accont = {
        "is_authenticated": False,  # 用户登录了就改成True
        "username": "mimi",  # 假装这是用户存的信息
        "password": "123"  # 假装这是用户存的信息
    }
    home()
    america()
    japan()
    henan(4)

1个函数可以有多个装饰器,装饰器效果由上至下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值