import time
#装饰器
def out(func): #闭包函数变量
def chag(*args,**kwargs): #装饰部分1
#func=date
start=time.time() #装饰部分1
func(*args,**kwargs) #被装饰对象,该值威威变量
stop=time.time() #装饰部分1
print(stop-start) #装饰部分1
return chag #返回内存地址
@out #语法糖处于被装束函数的顶上方 dat=out(date) #将被装饰对象重新命名变量
def date(x,y):
time.sleep(6)
print('warting...: %s %s' %(x,y))
print(date)
date(2,3)
def op(func):
def wrp(*args,**kwargs):
#1、调用原函数
#2、为其增加新功能
name=input('name id:').strip()
pwd=input('pawss id:').strip()
if name=='zxt' and pwd =='110':
print('yes,doing.....')
res=func(*args,**kwargs)
return res
else:
print('again')
return wrp
@op
def info(inter):
print(inter)
info('sa')
def n1(fu):#闭包
def n2(*args,**kwargs):
#1、调用原函数,2、添加新功能
ful=fu(*args,**kwargs)
return ful #返回内存地址
return n2 #返回内存地址
#有参装饰器: def q3(type): def q2(ww): def q1(*args,**kwargs): name=input('what your name:') bathday=input('what your bathday:') if type== 'file': if name=='zzg' and bathday=='1010': print('Welcome to the heart') we = ww(*args, **kwargs) return we else:print('sorry,erro') elif type=='web': print('web') elif type == 'mysql': print('mysql') return q1 return q2 @q3(type='file') def mm(name): print('my girl: %s' %name) @q3(type='web') def adress(ad): print('my home: %' %ad) @q3(type='mysql') def ago(ag): print('my old %' %ag) mm(5) adress(2) ago(23)