码迷,mamicode.com
首页 > 编程语言 > 详细

python学习-43 装饰器 -- 函数闭包2

时间:2019-07-20 18:38:25      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:dac   数加   开始   学习   int   abc   abd   inpu   rap   

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

 

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

 

python学习-43 装饰器 -- 函数闭包2

标签:dac   数加   开始   学习   int   abc   abd   inpu   rap   

原文地址:https://www.cnblogs.com/liujinjing521/p/11218689.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!