将函数分配给python中的变量

亚历克斯

我对这行代码有疑问:

def first():
    print('Hello From First')

    def wrapper():
        print('Hi From Second')

    return wrapper


first()
# a = first()
# a()

输出:

Hello From First

当我调用 first() 内部函数不打印但如果我取消注释那 2 行输出更改为:

Hello From First
Hello From First
Hi From Second

我想知道为什么将函数分配给变量并调用该变量来改变输出?

谢谢

伊丹兹

在第一种情况下,您只需执行first()导致第一次打印的原因。它还返回函数包装器,因为这是返回值,但没有对这个值做任何事情。

当您取消注释最后两行时:

  1. a = first()first()再次执行导致添加打印的原因时Hello From First,但这次a还包含指向包装函数的指针。
  2. 您执行a()导致执行打印的包装函数的原因Hi From Second希望很清楚。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章