python学习-43 装饰器 -- 函数闭包2
2019-07-24 09:28:14来源:博客园 阅读 ()
函数闭包为函数加上认证功能
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_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':'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_func
def index():
print('欢迎光临本网站')
@auth_func
def 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
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
