装饰器的作用:对函数功能进行扩展。
简单说明小练习:一个函数,直接输出欢迎新朋友,通过装饰器添加一个登录功能,设置登录次数。
# 装饰器的使用(带参数)
# 记录登录状态
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)