【问题标题】:What and why is the result by running tmp()?运行 tmp() 的结果是什么以及为什么?
【发布时间】:2018-12-01 02:51:48
【问题描述】:

我认为 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()

【问题讨论】:

    标签: python-3.x properties decorator


    【解决方案1】:

    tmp()f() 的答案不同,因为当我们分配 tmp=w1(f2) tmp 现在指向 inner() 内部函数。请记住,当您调用 w1(f2) 时,您将 inner 作为函数返回,因为执行了此 "Verifying ......"。当您调用tmp() 时,它再次执行inner()f2()。这就是tmp()f() 不同的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-22
      • 1970-01-01
      • 2019-08-12
      • 2011-03-30
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多