zoukankan      html  css  js  c++  java
  • 装饰器的使用例题 模拟用户登录使用

    def readfies(file): #定义读取用户账号和密码的函数,返回一个包含用户名和密码字典的列表
    li1=[]
    with open(file,"r+",encoding="utf-8")as user:
    users=user.readlines()
    for i in users:
    i = eval(i.strip(" "))
    li1.append(i)
    return li1

    user_stat = {"user":None,"login":False} #定义一个判断用户状态的变量
    def auth_fuc(fuc): #装饰器函数
    def authentication(*args,**kwargs): #先判断状态 状态是登陆状态直接执行被修饰的函数
    if user_stat["user"] and user_stat["login"]:
    rec=fuc(*args,**kwargs)
    return rec #判断完状态后返回结果 函数执行结束,如果上面不成立直接执行到用户输入状态
    ipname=input("请输入登陆用户名:")
    pass_wd=input("请输入用户密码:")
    users=readfies("userdb") #读取用户账号文件 做判断修改用户状态
    for i in users:
    if ipname == i["user_name"] and pass_wd == i["passwd"]:
    user_stat["user"]=ipname
    user_stat["login"]=True
    rec=fuc(*args,**kwargs)
    return rec
    else: #出错重新输入
    print("用户名或密码错误请重新输入。")
    return authentication


    def index():
    print("欢迎来到购物网站")

    @auth_fuc

    def home(name):
    print("欢迎【%s】回家" % name)

    @auth_fuc
    def gouwu_car(name):
    print("【%s】的家里有%s,%s,%s" % (name, "矿泉水", "面包", "火腿肠"))

    index()

    print("user_state之前状态--->", user_stat)
    home("小黑猪")
    print("user_state之后状态--->", user_stat)

    gouwu_car("小黑猪")
  • 相关阅读:
    cookie的过期时间
    Cookie的使用及位置
    用存储过程进行的查询拼接
    验证码的使用
    SQLHelper
    App_code的引用
    GridView使用
    javascript、ajax验证
    数据库小结(三)
    数据库操作(七)存储过程
  • 原文地址:https://www.cnblogs.com/Centwei/p/14428786.html
Copyright © 2011-2022 走看看