小白不太理解
def out(func):
def add():
print("前功能添加")
r = func()
print("后功能添加")
return r
return add
@out
def f():
print("现功能添加")
n = out(f) #==n=add
f = n
f()
为啥就忽然要用r=func?那这个func 又是怎么调用 print("现功能添加") ??是因为下面 n=out(f)所以才调用的嘛?麻烦大佬讲个思路
def out(func):
def add():
print("前功能添加")
r = func()
print("后功能添加")
return r
return add
@out
def f():
print("现功能添加")
n = out(f) #==n=add
f = n
f()
为啥就忽然要用r=func?那这个func 又是怎么调用 print("现功能添加") ??是因为下面 n=out(f)所以才调用的嘛?麻烦大佬讲个思路
2019-01-20
我的理解为:
def out(func):
def add():
print("前功能添加")
r = func()#调用函数func()结果,有print,没有返回值
print("后功能添加")
return r#r为None
return add
@out
def f():
print("现功能添加")#这里相当于def f():
# print("现功能添加")
# f=out(f)
n = out(f) #f已经是装饰过后的f,n返回add函数
f = n
f()#调用add(),依次是print'前功能添加',r=func()这里f已经装饰过了,
#返回f的结果‘前功能添加’‘现功能添加’,‘后功能添加’
#再print‘后功能添加’
举报