浙江网站建设模板网站,建设公司内网网站的意义,网站开发找工作,国内ui设计培训格式一#xff1a;装饰器外层不传参#xff0c;内层传参 user_status False # 用户登录了就把这个改成Truedef login(func): # 把要执行的henan模块从这里传进来def inner(*args, **kwargs): # 再定义一层函数#xff0c;参数为henan的参数_username alex …格式一装饰器外层不传参内层传参 user_status False # 用户登录了就把这个改成Truedef login(func): # 把要执行的henan模块从这里传进来def inner(*args, **kwargs): # 再定义一层函数参数为henan的参数_username alex # 假装这是DB里存的用户信息_password abc!23 # 假装这是DB里存的用户信息global user_statusif user_status False:username raw_input(user:)password raw_input(password:)if username _username and password _password:print(welcome login....)user_status Trueelse:print(wrong username or password!)if user_status True:func(*args, **kwargs) # 看这里看这里只要验证通过了就调用相应功能return inner # 用户调用login时只会返回inner的内存地址下次再调用时加上()才会执行inner函数login #注意因为这里没有传参所以没有括号
def henan(t):print henan********,%s %thenan(henan args)运行结果-- user:alexpassword:abc!23welcome login....henan********,henan args 格式一装饰器外层传参内层传参 user_status False #用户登录了就把这个改成Truedef login(auth_type): #把要执行的参数从这里传进来def auth(func): # 把要执行的henan模块从这里传进来def inner(*args,**kwargs):#再定义一层函数if auth_type qq:_username alex #假装这是DB里存的用户信息_password abc!23 #假装这是DB里存的用户信息global user_statusif user_status False:username raw_input(user:)password raw_input(pasword:)if username _username and password _password:print(welcome login....)user_status Trueelse:print(wrong username or password!)if user_status True:return func(*args,**kwargs) # 看这里看这里只要验证通过了就调用相应功能else:print(only support qq )return inner #用户调用login时只会返回inner的内存地址下次再调用时加上()才会执行inner函数return authlogin(qq) #注意这里传入参数给装饰器外层
def henan(t):print henan********,%s %thenan(henan args)运行结果 user:alexpasword:abc!23welcome login....henan********,henan args 应用场景一登录验证 优点 1、不会改变原先代码结构 2、不会改变原先的调用方式 参考http://www.cnblogs.com/alex3714/articles/5765046.html转载于:https://www.cnblogs.com/kevincaptain/p/10442063.html