Python之路,Day4 - Python基础4 (new版)
- 装饰器
user_status = False #用户登录后改为True def login(func): #传入想调用的函数名 def inner(): _username = 'alex' #假装这是DB里存的用户信息 _password = 'abc!23' #假装这是DB里存的用户信息 global user_status if user_status == False: username = input('user:') password = input('password:') if username == _username and password == _password : print('welcome login...') user_status = True else: print('wrong username or password!') else: print('用户已登录,验证通过...') if user_status: func() #执行传入的函数名的函数 return inner #返回内层函数的内存地址 def home(): print('----首页----') def america(): print('----欧美专区----') def japan(): print('----日韩专区----') @login #相当于henan = login(henan) ,返回inner def henan(): print('----河南专区----') henan()
- 装饰带参数的函数 支持多个参数
user_status = False #用户登录后改为True def login(func): #传入想调用的函数名 def inner(*args,**kwargs): _username = 'alex' #假装这是DB里存的用户信息 _password = 'abc!23' #假装这是DB里存的用户信息 global user_status if user_status == False: username = input('user:') password = input('password:') if username == _username and password == _password : print('welcome login...') user_status = True else: print('wrong username or password!') else: print('用户已登录,验证通过...') if user_status: func(*args,**kwargs) #执行传入的函数名的函数 return inner #返回内层函数的内存地址 def home(): print('----首页----') def america(): print('----欧美专区----') @login def japan(): print('----日韩专区----') @login #相当于henan = login(henan) = inner def henan(style): print('----河南专区----',style) henan('3p') japan()
- 装饰器带参数
user_status = False #用户登录后改为True def login(author_type): #传入想调用的函数名 def outer(func): def inner(*args,**kwargs): _username = 'alex' #假装这是DB里存的用户信息 _password = 'abc!23' #假装这是DB里存的用户信息 global user_status if user_status == False: username = input('user:') password = input('password:') if username == _username and password == _password : print('welcome login...') user_status = True else: print('wrong username or password!') else: print('用户已登录,验证通过...') if user_status: func(*args,**kwargs) #执行传入的函数名的函数 return inner #返回内层函数的内存地址 return outer def home(): print('----首页----') def america(): print('----欧美专区----') @login('wx') def japan(): print('----日韩专区----') @login('qq') #相当于 xx = login('qq') = outer, henan = xx(henan) = inner def henan(style): print('----河南专区----',style) henan('3p') japan()