一:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#----------无参装饰器记忆格式------def wrapper(func): def inner(*args,**kwargs): res=func(*args,**kwargs) return res return inner#---------有参装饰器记忆格式-------def outer(flag): def func(t): if flag: def inner(*arg, **kwargs): res=t(*arg, **kwargs) return res return inner else: return t return func |
二:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# -------无参装饰器标准姿势-------def wrapper(func): def inner(*args,**kwargs): #它就是在运行funct(*args,**kwargs), #此处加上新的功能 res = func(*args,**kwargs)#此时真正的fanc被放到这里运行了, #此处加上新的功能 return res return inner #返回inner,此时inner=func,所以@wrapper# 先进行wrapper(func)函数运行,return值给func,相当于func=inner(return值)def func(): print("func")# ------有参装饰器标准姿势-----def outer(flag): #根据参数flag的情况判断执行内部的功能 def func(t): if flag: #如果flag为true执行下面添加新功能的用户真正想执行的t函数 def inner(*arg, **kwargs): #添加新功能 res=t(*arg, **kwargs) # ==>func() #添加新功能 return res #将添加性功能的函数返回给用户 return inner else: #如果flag为false执行下面 return 888 return func@outer(flag=True) #此处先执行这个叫outer(flag=Ture)这个函数(与装饰器无关),得到的值才是真正的装饰器def t(): print("t") |
浙公网安备 33010602011771号