装饰器实现 ----简单验证功能

def auth_func (func):
    def wrapper (*args,**kwargs):
        username = input('用户名:').strip()   #去除两边空格
        passwd = input('密码:').strip()
        if username == 'haha' and passwd == '123' :
            res=func(*args,**kwargs)
            return res
        else:
            print("用户名密码错误")
    return wrapper

@auth_func
def index ():
    print('欢迎来imebo')
@auth_func
def home (name):
    print('%s欢迎回家'%(name))
@auth_func
def shopping_car (name):
    print('%s购物车里有 [%s,%s]' %(name,'衣服','娃娃'))

index()
home('zhink')
shopping_car('zhink')

装饰器先写框架,再加里面的内容。

用全局变量模拟用户状态(session)

user_dic = {'username':None,'login':False}     #定议全局变量,用户名和状态(True和false判断)
def auth_func (func):
    def wrapper (*args,**kwargs):
        if user_dic['username'] and ['login'] :     #先判断用户是否登录,如果登录直接运行函数并返回值
            res = func(*args,**kwargs)
            return res
        username = input('用户名:').strip()
        passwd = input('密码:').strip()
        if username == 'haha' and passwd == '123' :    #  如果没有登录,输入后把当前状态保存,修改全局变量
            user_dic['username']=username
            user_dic['login']=True
            res=func(*args,**kwargs)
            return res
        else:
            print("用户名密码错误")
    return wrapper

@auth_func
def index ():
    print('欢迎来imebo')
@auth_func
def home (name):
    print('%s欢迎回家'%(name))
@auth_func
def shopping_car (name):
    print('%s购物车里有 [%s,%s]' %(name,'衣服','娃娃'))

index()
home('zhink')
shopping_car('zhink')

 

posted @ 2018-05-31 14:51  淼如  阅读(145)  评论(0)    收藏  举报