我对这行代码有疑问:
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()
导致第一次打印的原因。它还返回函数包装器,因为这是返回值,但没有对这个值做任何事情。
当您取消注释最后两行时:
a = first()
您first()
再次执行导致添加打印的原因时Hello From First
,但这次a
还包含指向包装函数的指针。a()
导致执行打印的包装函数的原因Hi From Second
。希望很清楚。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句