Python 为什么我调用闭包时它会执行嵌套函数?
我正在学习闭包,我有两个问题 从我读到的关于闭包的内容来看:Python 为什么我调用闭包时它会执行嵌套函数?,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我正在学习闭包,我有两个问题 从我读到的关于闭包的内容来看: 闭包仅在程序具有嵌套函数时使用 闭包用于指定嵌套函数的返回值 第一个问题: 我对闭包的理解正确吗 def hi(x): print(x) def hh(): print(x) return x return hh hi(9) hj=hi(12) hj11=hi(99) print(hj()) print(hj11()) 第二个问题: 为什么每次调用hj()或hj11()时都会调用嵌
- 闭包仅在程序具有嵌套函数时使用
- 闭包用于指定嵌套函数的返回值
def hi(x):
print(x)
def hh():
print(x)
return x
return hh
hi(9)
hj=hi(12)
hj11=hi(99)
print(hj())
print(hj11())
第二个问题:
为什么每次调用hj()
或hj11()
时都会调用嵌套函数
我感到困惑的是,如果闭包分配给主函数(hj=hi,hj11=hi)
,那么为什么每次调用hj()
,它都调用嵌套函数?调用hi()
返回一个函数对象(每次都从def hh():…
中的语句返回一个新的函数对象)。该函数对象使用闭包获取x
的值。我不确定您希望发生什么?调用hi()
返回一个函数对象(每次都从def hh():…
中的hi()
语句返回一个新的函数对象)。该函数对象使用闭包获取x
的值。我不确定你期望会发生什么?