我认为tmp()与f2()相同。但是我得到2个不同的结果。
def w1(func):
def inner():
print("Verifying ......")
return func()
return inner
@w1
def f2():
print('f2')
f2()
print("Equivalently:")
tmp = w1(f2)
tmp()
答案 0 :(得分:3)
tmp()
和f()
的答案是不同的,因为当我们分配tmp=w1(f2)
时,tmp
现在指向inner()
内部函数。请记住,由于执行了inner
,因此在调用w1(f2)
时将"Verifying ......"
作为函数返回。并且,当您调用tmp()
时,它将再次使用inner()
执行f2()
。这就是tmp()
和f()
不同的原因。