python - 从嵌套函数中的封闭范围访问变量

我在另一个函数 foo() 中嵌套了一个函数定义 bar()。现在我试图从嵌套函数 bar() 访问位于外部函数 foo() 中的变量。然而,由于范围规则,这不起作用(请参阅下面的错误回溯)。

我正在寻找类似于 global 关键字的东西,但是它只能让我访问global 变量,而这是某种半全局变量 变量。

示例代码:

def foo():
    i = 0
    def bar():
        # how can I get access to the variable from enclosing scope?
        i += 1
    bar()

foo()

输出是:

$ python test.py
Traceback (most recent call last):
  File "test.py", line 7, in <module>
    foo()
  File "test.py", line 5, in foo
    bar()
  File "test.py", line 4, in bar
    i += 1
UnboundLocalError: local variable 'i' referenced before assignment

最佳答案

您需要 nonlocal 语句而不是 global

i 显然不是全局的,但它也不是 foo 的局部变量。它位于 __init__ 的本地。因此,为了访问它,将其声明为 nonlocal

不幸的是,nonlocal 仅适用于 python3。 您可以通过闭包来模拟它,但这会变得非常难看。

https://stackoverflow.com/questions/10193754/

相关文章:

r - 使用已经汇总的数据在 ggplot2 上生成条形图

asp.net - 如何在网址栏中隐藏 asp 网址?

php - 使用 sha256WithRSAEncryption 签名需要什么版本的 OpenSSL

jsf - 如何为 h :graphicImage Primefaces 添加操作

visual-studio - 将 tinyxml2 与 Visual Studio、Visual

C++ 问题 - getline 跳过第一个输入

fortran - 大型阵列导致 OpenMP 崩溃

jquery - 如何使用 jQuery 和 HTML5 canvas 画线

wordpress - 使用帖子 ID 查询帖子

c# - 使用 "new"初始化的 Fixed(){} 中的多个指针不起作用