大家看下这个程序
def test(func):
def test_in():
print ("testing")
func()
def f1():
return "被装饰函数"
a=f1()
print(a)
大家一看就知道打印的结果是:
#被装饰函数
我们应用装饰器如下:
def test(func):
def test_in():
print ("testing")
func()
return test_in
@test
def f1():
return "被装饰函数"
a=f1()
print(a)
我们打印的结果如下:
testing
None
有小伙伴该问了 ,我f1()函数是有返回值的,怎么没有显示出来呢
下边我解释下:
- print (f1()) 要知道f1=test(f1) ,f1 指向的是 test_in 函数体, test_in 函数体是没有任何返回, 所以不会返回 。
- 有人说了 func() 是有返回的, 为什么不执行呢, func()虽然有返回, 但是它不属于 test_in 函数 ,也就是没有毛用
如果想 执行被装饰函数的返回值, 我们可以改下, 把返回放到 test_in, 让她属于 这个函数就行了,改下如下:
def test(func):
def test_in():
print ("testing")
a=func()
return a
return test_in
@test
def f1():
return "被装饰函数"
a=f1()
print(a)
打印结果如下 :
testing
被装饰函数