我认为 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()
最佳答案
tmp()
和 f()
的答案是不同的,因为当我们赋值 tmp=w1(f2)
tmp
现在指向 inner()
内部函数。请记住,当您调用 w1(f2)
时,您将 inner
作为函数返回,因为执行了此 “Verifying ......”
。当您调用 tmp()
时,它会再次使用 f2()
执行 inner()
。这就是 tmp()
和 f()
不同的原因。
关于python-3.x - 运行 tmp() 的结果是什么以及为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53567364/