博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python学习-43 装饰器 -- 函数闭包2
阅读量:4355 次
发布时间:2019-06-07

本文共 1894 字,大约阅读时间需要 6 分钟。

函数闭包为函数加上认证功能

 

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 == '123456': user_dic['username'] = username user_dic['login'] = True print('登陆成功!') res=func(*args,**kwargs) return res else: print('用户名或密码错误') return wrapper@auth_funcdef index(): print('欢迎光临本网站')@auth_funcdef home(name): print('欢迎%s回家' % name)index()home('小明')

运行结果:

账号:abcd密码:123456登陆成功!欢迎小明回家Process finished with exit code 0

 

2.检测已有账号登陆

 

user_list=[{
'name':'abcd','passwd':'123456'}, {
'name':'abd','passwd':'123'}, {
'name':'acc','passwd':'123456'}, {
'name':'asdfg','passwd':'12346'}]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_funcdef index(): print('欢迎光临本网站')@auth_funcdef home(name): print('欢迎%s回家' % name)index()home('sb')

运行结果:

账号:abd密码:123登陆成功!欢迎光临本网站欢迎sb回家Process finished with exit code 0

 

转载于:https://www.cnblogs.com/liujinjing521/p/11218689.html

你可能感兴趣的文章
Java 学习之路 之 泛型方法
查看>>
Test
查看>>
C# 整理
查看>>
AngularJS中使用$resource
查看>>
[poj3261]Milk Patterns(后缀数组)
查看>>
[luogu3369]普通平衡树(fhq-treap模板)
查看>>
题解 P2799 【国王的魔镜】
查看>>
写写代码,注意注意细节
查看>>
css Backgroud-clip (文字颜色渐变)
查看>>
安装 OpenSSL 工具
查看>>
用长微博工具发布长微博
查看>>
大庆金桥帆软报表案例
查看>>
方维分享系统,个人中心杂志社显示我的、关注的、推荐的数量
查看>>
JavaScript BOM加载事件
查看>>
Java复习总结——详细理解Java反射机制
查看>>
Navicat for MySQL10.1.7注册码
查看>>
Proxy模式
查看>>
读书多些会怎样
查看>>
浏览器好用的技术
查看>>
HDU 2188------巴什博弈
查看>>