Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我调用闭包时它会执行嵌套函数?_Python_Python 2.7_Python 3.x - Fatal编程技术网

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
的值。我不确定你期望会发生什么?