python学习-43 装饰器 -- 函数闭包2
2024-08-24 21:55:42
函数闭包为函数加上认证功能
1.登陆账号
user_dic ={'username':None,'login':False} def auth_func(func):
def wrapper(*args,**kwargs): if user_dic['username'] and user_dic['login']:
res = func(*args,**kwargs)
return res username = input('账号:').strip()
passwd = input('密码:').strip()
if username == 'abcd' and passwd == '':
user_dic['username'] = username
user_dic['login'] = True
print('登陆成功!')
res=func(*args,**kwargs)
return res
else:
print('用户名或密码错误')
return wrapper @auth_func
def index():
print('欢迎光临本网站') @auth_func
def home(name):
print('欢迎%s回家' % name) index()
home('小明')
运行结果:
账号:abcd
密码:123456
登陆成功!
欢迎小明回家 Process finished with exit code 0
2.检测已有账号登陆
user_list=[{'name':'abcd','passwd':''},
{'name':'abd','passwd':''},
{'name':'acc','passwd':''},
{'name':'asdfg','passwd':''}
]
user_dac ={'username':None,'login':False} # 获取刚开始登陆之前的状态 def auth_func(func):
def wrapper(*args,**kwargs): if user_dac['username'] and user_dac['login']: # 获取刚开始登陆之前的状态,是否已登录
res = func(*args,**kwargs)
return res username = input('账号:').strip()
passwd = input('密码:').strip()
for user_dic in user_list:
if username == user_dic['name'] and passwd == user_dic['passwd']:
user_dac['username'] = username
user_dac['login'] = True
print('登陆成功!')
res=func(*args,**kwargs)
return res
else:
print('用户名或密码错误')
return wrapper @auth_func
def index():
print('欢迎光临本网站') @auth_func
def home(name):
print('欢迎%s回家' % name) index()
home('sb')
运行结果:
账号:abd
密码:123
登陆成功!
欢迎光临本网站
欢迎sb回家 Process finished with exit code 0
最新文章
- Android中处理崩溃异常
- Chrome F12学习
- VMvare克隆复制多个操作系统
- 山东理工大学第七届ACM校赛-完美素数 分类: 比赛 2015-06-26 10:36 15人阅读 评论(0) 收藏
- SqlServer之代码块相关
- nativescript环境搭建
- 关于jQuery,$(";:button";) 中的冒号是什么意思?
- Linux系统编程(24)——信号的生命周期
- SVG 和字符图标
- 2013Esri全球用户大会之解读Web GIS
- Django编写RESTful API(六):ViewSets和Routers
- 2015211230554《Java程序设计》第6周学习总结
- Python扩展方法一二事
- 做双网卡绑定_______物理机在双网卡的情况下做多IP绑定
- PhoenixFD插件流体模拟——UI布局【Splash | Mist】详解
- Element transfer 两边数据(左右)的显示问题?
- 用FileZilla链接Linux服务器
- 安装jumpserver
- python爬虫(二)
- install ros-indigo-map-msgs