Python基础12-装饰器
2021-06-22 05:04
标签:基础 put 功能 方式 soft ret 装饰器 login code 装饰器:本质就是函数,功能是为其他函数添加附加功能 装饰器=高阶函数+函数嵌套+闭包 原则:1.不修改被修饰函数的源代码 2.不修改被修饰函数的调用方式 Python基础12-装饰器 标签:基础 put 功能 方式 soft ret 装饰器 login code 原文地址:https://www.cnblogs.com/josie930813/p/9680877.html#用修饰器模拟验证功能
user_list=[
{‘user‘:‘alex‘,‘passwd‘:‘123‘},
{‘user‘:‘justin‘,‘passwd‘:‘123‘},
{‘user‘:‘balley‘,‘passwd‘:‘123‘}
]
user_tag = {‘username‘:None,‘login‘:False}
def login(func):
def wrapper(*args,**kwargs):
if user_tag[‘username‘] and user_tag[‘login‘]:
res = func(*args,**kwargs)
return res
name = input(‘请输入用户名:‘).strip()
passwd = input(‘请输入您的密码:‘).strip()
for name_dic in user_list:
if name_dic[‘user‘]==name and name_dic[‘passwd‘]==passwd: #记住登录状态,调用其他函数时不用再重新登录
user_tag[‘username‘] = name_dic[‘user‘]
user_tag[‘login‘] = True
res = func(*args, **kwargs)
return res
else:
print(‘用户名或账号密码错误‘)
return wrapper
@login #相当于home = login(home)
def home(name,x=‘!!!‘):
print(‘亲爱的%s:欢迎回家%s‘ %(name,x))
@login
def buycar():
print(‘这是你的购物车‘)
@login
def order():
print(‘这是你的订单‘)
home(‘alex‘,x=‘!‘)
buycar()
输出结果:
请输入用户名:alex
请输入您的密码:123
亲爱的alex:欢迎回家!
这是你的购物车