1.不带参数
def funA(fn):
print('funA')
fn()
@funA
def funB():
print('funB')
等价于:
def funA(fn):
print('funA')
fn()
def funB():
print('funB')
funA(funB)
输出:
funA
funB
2.带参数
def funA(fn):
print('funA')
fn('str1111')
def funC(str2):
print(str2)
return funC
@funA
def funB(str1):
print('funB')
print(str1)
funB('str2222')
输出:
funA
funB
str1111
str2222
实际上@的作用就是将被修饰的函数funB作为参数传给funA