从函数内部的函数更改局部变量的值

银河001

我有这样的事情:

def a():
  #do something
  foo = 0
  def b():
    foo += 2
    # do something
  b()
  #do something

a()

但它说

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    a()
  File "<pyshell#5>", line 7, in a
    b()
  File "<pyshell#5>", line 5, in b
    foo += 2
UnboundLocalError: local variable 'foo' referenced before assignment

如何在foo不将其设为全局的情况下进行访问

切普纳

fooin的赋值b使其成为局部变量,与 in 中的同名变量无关a使用nonlocal语句来改变它。

def a():
    #do something
    foo = 0
    def b():
        nonlocal foo
        foo += 2
        # do something
    b()
  #do something

现在,foob相同变量fooanonlocal类似于global,但使用包含名称的最接近的封闭范围,foo而不是直接跳转到全局范围。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章