python - 另一个 Python 变量范围问题

标签 python variables scope

我有以下代码:

>>> def f(v=1):
...     def ff():
...             print v
...             v = 2
...     ff()
...
>>> f()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 5, in f
  File "<stdin>", line 3, in ff
UnboundLocalError: local variable 'v' referenced before assignment

我明白为什么会出现此消息 ( Python variable scope question ),但在这种情况下我如何使用 v 变量? global v 在这种情况下不起作用。

最佳答案

在 Python 3.x 中,您可以使用 nonlocal :

def f(v=1):
    def ff():
        nonlocal v
        print(v)
        v = 2
    ff()

在 Python 2.x 中,没有简单的解决方案。一个 hack 是使 v 成为一个列表:

def f(v=None):
    if v is None:
        v = [1]
    def ff():
        print v[0]
        v[0] = 2
    ff()

关于python - 另一个 Python 变量范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6256537/

相关文章:

variables - jekyll 将变量传递给表单页面

python - 为什么第 256 行和第 256 列没有蓝线?

python - 如何为 SQLAlchemy 引擎打开一个连接?

c - 在 C 中使用变量声明多个结构体

php - 访问类内函数中声明的变量 (PHP)

javascript - 通过私有(private)函数和自执行函数理解 JavaScript

c - C 中函数的作用域

Python:通过字符串列表递归 - 如何区分?

python - 选择GUI时如何去除黑边?

Javascript 语句的执行顺序