话不多说先上代码,简单粗暴解释用法
def a(fun):
fun()
@a
def fn():
print(12)
执行以上代码,得到输出
12
这里解释了@解释器的用法,即将函数作为修饰器函数的参数传入。
尝试了一下使用两个修饰器的情况,使用方法如下
def a(fun):
print('a')
fun()
return fun
def b(fun):
print('b')
fun()
@b
@a
def fn():
print(12)
输出为
a
12
b
12
尝试到这里,会很自然想到为什么需要@修饰符的存在,因为本身 python 的函数就可以将函数作为参数传入,比如将第一个例子改为如下代码:
def a(fun):
fun()
def fn():
print(12)
a(fn)
查了一些资料,原因应该和 aop 的思想有关,没有深究,埋个坑,有时间了深挖。
网友评论