第三篇:函数之装饰器
1、什么是装饰器
装饰指的是为被装饰对象添加新的功能
器指的的是工具
装饰器本身可以任意可调用的对象,被装饰的对象也可以是任意可调用的对象
目标:
写一个函数用来为另外一个函数添加新功能,需要遵循开放封闭原则(对修改是封闭的,对扩展是开放的)
1、不修改被装饰对象的源代码
2、不修改被装饰对象的调用方式
case分析:
示列:访问首页前,进行登录认证。
1 user_info = { 2 "zhangsan": "123456", 3 "lisi": "mima2", 4 "wangwu": "mima3", 5 } 6 def login_auth(): 7 tag=True 8 while tag: 9 input_username = input('请输入用户名:').strip() 10 input_password = input('请输入密码:').strip() 11 for key,item in user_info.items(): 12 if key == input_username and item == input_password: 13 tag=False 14 return True 15 else: 16 print('输入的用户名或者密码错误,请重新输入。。') 17 break 18 def outter(func): 19 def inner(*args,**kwargs): 20 if login_auth(): func(*args,**kwargs) 21 return inner 22 @outter 23 def index(): 24 print('welcome to my web page...') 25 index()