装饰器——day12

装饰器

1.什么是装饰器
装饰器指的是被装饰对象添加新功能的工具
装饰器本身可以是任意课调用对象
被装饰对象本身也可以是任意可调用对象
2.为何要用装饰器
开放封闭原则:对修改封闭,对扩展开放
装饰器的实现原则:
2.1.不能修改被装饰对象的源代码
2.2.不能修改被装饰对象的调用方式
装饰器的目的:
就是在遵循原则1和2的前提为被装饰对象添加新功能
3.如何用
方法1
import time
def index():
time.sleep(1)
print('welcome to index page')

def wrapper():
start=time.time()
func()
stop=time.time()
print('run time is %s'%(stop-start))
wrapper

 

方法2
import time
def outter(func)
def wrapper(*args,**kwargs)
srart=time.time()
res=func(*args,**kwargs:)
stop=time.time()
print('run time is %s'%(stop-start))
return res
return wrapper

@outter   语法糖用法
def index():
time.sleep(1)
print('welcome to index page')
return 1234

@outter   语法糖用法
def home(name):
time.sleep(1)
print('welcome %s to home page'%name)

res = index()

home('egon')


小练习
import time
def auth(func):
def wrapper(*args,**kwargs):
name=input('name>>>>:').strip()
pwd=input('pwd>>>>>:').strip()
if name=='egon' and pwd=='123'
print(login successfull')
res=func(*args,**kwargs)
return res
else:
print('uesr or pwd error')
return wrapper

def outter(func)
def wrapper(*arge,**kwargs):
res=func(*args,**kwarge)
return res
return wrapper
@outter
def index():
time sleep(1)
print('welcome to index page')
return 1234
index

posted @ 2018-11-29 16:25  WenChen-0o0  阅读(103)  评论(0编辑  收藏  举报