带参数装饰器的使用

文章介绍了如何使用带参数的装饰器来扩展函数功能,如添加登录验证,包括用户名密码检查、验证码和登录次数限制。示例中,`test`函数在执行前先进行登录检查。
摘要由CSDN通过智能技术生成

装饰器的作用:对函数功能进行扩展。

简单说明小练习:一个函数,直接输出欢迎新朋友,通过装饰器添加一个登录功能,设置登录次数。

# 装饰器的使用(带参数)
# 记录登录状态
status = False


def login(func):
    def Wrapper(*args, **kwargs):
        # 已登录状态
        if status:
            return func(*args, **kwargs)
        else:
            if kwargs['loginnum'] <= 3:

                if kwargs['variety'] == 123456:
                    username = input('请输入用户名:')
                    password = input('请输入密码:')
                    if username == 'root' and password == 'root':
                        print('登录成功')
                        return func(*args, **kwargs)
                    else:
                        print('账号密码错误,请重新输入!')
                        kwargs['loginnum'] += 1
                        Wrapper(*args, **kwargs)
                else:
                    print('验证码错误!请重新获取验证码')
            else:
                print('登录次数超过最大次数!请10分钟后在尝试登录!')

    return Wrapper


@login
def test(variety, loginnum):
    print('欢迎新朋友!!!')


# variety是验证码参数,loginnum记录登录次数的初始值
test(variety=123456, loginnum=1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值