Python 嵌入函数中的全局变量

Python 嵌入函数中的全局变量,python,python-3.x,global-variables,Python,Python 3.x,Global Variables,我有以下片段: def test (): num_sum = 0 def inner_test (): global num_sum num_sum += 1 inner_test() return num_sum 当我运行测试时,我得到: NameError:未定义名称“num\u sum” 我希望内部函数会更改外部函数中定义的num_sum变量的值。基本上,我需要一个全局变量来增加我可以递归调用的内部函数 我注意到这种模式适用于集合列表和字典,即使我没有将变量定

我有以下片段:

def test ():
  num_sum = 0
  def inner_test ():
    global num_sum
    num_sum += 1
  inner_test()
return num_sum
当我运行测试时,我得到:

NameError:未定义名称“num\u sum”

我希望内部函数会更改外部函数中定义的num_sum变量的值。基本上,我需要一个全局变量来增加我可以递归调用的内部函数

我注意到这种模式适用于集合列表和字典,即使我没有将变量定义为全局变量,而是将其作为参数传递给内部函数

然而,对于像int这样的标量值,这种模式似乎被打破了。无论是将变量定义为此处的全局变量,还是将其作为参数传递给内部函数,都无法达到预期效果。基本上,标量变量保持不变。我需要做什么才能用这些标量值获得所需的行为?

您需要的不是全局。您的num_sum不是全局变量,将无法在全局变量中找到。nonlocal将指示python不要在全局名称空间中搜索它,而是在最近的名称空间中搜索它。订单是。

可能重复的