首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌入函数中的全局变量

嵌入函数中的全局变量
EN

Stack Overflow用户
提问于 2019-09-02 15:29:02
回答 1查看 102关注 0票数 0

我有以下片段:

代码语言:javascript
复制
def test ():
  num_sum = 0
  def inner_test ():
    global num_sum
    num_sum += 1
  inner_test()
return num_sum

当我运行test()时,我得到:

NameError:未定义名称“num_sum”

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

我注意到,即使我不将变量定义为全局变量(但将其作为参数传递给内部函数),这种模式也适用于集合(列表、字典)。

但是,对于像int这样的标量值,这种模式似乎已经崩溃了。无论是将变量定义为全局变量(如这里所示),还是将其作为参数传递给内部函数,都不会按预期工作。基本上,标量变量保持不变。我需要做什么才能得到这样的标量值所期望的行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-02 15:34:15

您需要nonlocal而不是global。您的num_sum不是全局变量(在globals()中找不到)。nonlocal将指示python不要在全局命名空间中搜索它,而是在最近的名称空间中搜索它。订单是LEGB:本地的,封闭的,全球的,内置的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57759518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档