第三篇:函数之装饰器

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()

 

posted @ 2017-12-26 22:59  zhang.ning  阅读(128)  评论(0编辑  收藏  举报