deffunc1(x):definner():print (x)
return inner
ss = func1(4)
ss()**************结果**************4
装饰器 装饰器其实就是一个闭包,把一个函数当做参数然后返回一个替代版函数
*****************定义****************defzsq(func):definner():print("-"*30)
func()return inner
*****************使用********************
@zsq
defsent():print('sent')
sent()*****************结果********************------------------------------
sent
函数参数 带参数 带返回值
defzsq(func):definner(*args,**kwargs):print("-"*30)
res = func(*args,**kwargs)return res
return inner
@zsq
defsent(a,b):print('sent')print(a,b)
sent(1,2)**************结果**********------------------------------
sent
12
带参数的装饰器
'''
直接用把参数放入装饰器是不行的 ,装饰器有固定格式,
解决办法,首先封装一个装饰器,
然后通过闭包,把需要的参数和装饰器打包在一起,返回装饰器。装饰器在调用函数和传入的变量
'''defgetzsq(char):defzsq(func):definner(*args,**kwargs):print(char *30)
res = func(*args,**kwargs)return res
return inner
return zsq
@getzsq("-")# func= zsq(func)deffunc():print("sent")print("k")return5
ss = func()print(ss)**************结果**********------------------------------
sent
k
5-