十一.Python_函数闭包模拟Session
发布日期:2021-05-07 00:20:19 浏览次数:22 分类:精选文章

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

 Python_函数闭包模拟Session

#   19.函数闭包模拟Session#模拟数据库list_user=[{"name":"tom","password":"123"},           {"name": "cat", "password": "123"},           {"name": "ssh", "password": "123"},           {"name": "alex", "password": "123"},           {"name": "marry", "password": "123"},           {"name": "sam", "password": "123"}]   #模拟数据库的用户#模拟Sessioncurren_login={"name":None,"status":False}        #当前登录状态#判断用户登陆验证的装饰器def validate(con):                                #获取@validator()的参数    def _validate(func):                          #获取目标函数        def wrapper():                            #获取目标函数的参数            if(curren_login["name"] and curren_login["status"]):    #获取当前登录状态是否存在用户登录                res = func(curren_login["name"])                     #用户登录调用目标函数                return res                                           #返回目标函数            print("欢迎来到京东商城!")            name=input("请输入用户名:")                              #用户没用登陆让用户输入用户名            password=input("请输入密码:")                           #用户没用登陆让用户输入用户密码            for i in list_user:                                      #循环数据库的用户                if i["name"]==name:                                  #判断该用户是否存在数据库中                    if(password==i["password"]):                     #判断该用户的密码与数据库存储的密码是否一致                        print("执行%s函数"%con)                      #输出要执行的函数                        res=func(name)                                #用户登录成功调用目标函数                        curren_login["name"]=name                    #设置登录状态的用户                        curren_login["status"]=True                 #设置登录状态                        return res                                   #返回目标函数                    else:                                            #用户名或密码输入有误                        print("您输入的用户名或密码有误!")         #打印登陆失败的结果        return wrapper                                               #将wrapper函数作为返回值    return _validate                                                #将_validate函数作为返回值#跳转jd首页@validate("index")                  #相当于index=_validator(index)def index(name="1223"):    print("%s!欢迎来到JD页面!"%name)#跳转jd个人主页@validate("home")                  #相当于home=_validator(home)def home(name="1223"):    print("欢迎%s来到home!"%name)#跳转jd购物车@validate("shop")                  #相当于shop=_validator(shop)def shop(name="1223"):    print("%s 购物车里有 零食 数码产品"%name)index()                            #调用index函数# home()# shop()

 

上一篇:十二.Python文件操作逻辑与解耦
下一篇:十.Python_解压序列

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月23日 19时06分52秒