使用Python编译变量出现UnboundLocalError提示?
Mac软件教程 2021-04-13 16:29:00
Python是一种可解释和通用的语言,作为当今最受欢迎和最受欢迎的语言之一。Python支持多种编程技术,包括过程,面向对象和函数式编程。如果大家在使用Python编译变量,出现UnboundLocalError提示却不知道如何解决。那就来看看下面的教程。
通过在函数主体中的某个位置添加赋值语句来修改以前的工作代码中的UnboundLocalError可能令人惊讶。
这段代码:
>>>
>>> x = 10 >>> def bar(): ... print(x) >>> bar() 10
可以,但是这段代码:
>>>
>>> x = 10 >>> def foo(): ... print(x) ... x += 1
导致UnboundLocalError:
>>>
>>> foo() Traceback (most recent call last): ... UnboundLocalError: local variable 'x' referenced before assignment
这是因为当您对作用域中的变量进行赋值时,该变量将成为该作用域的局部变量,并在外部作用域中隐藏任何类似命名的变量。由于foo中的最后一条语句为分配了新值 x,因此编译器将其识别为局部变量。因此,当较早版本print(x)尝试打印未初始化的局部变量时,将导致错误。
在上面的示例中,您可以通过将其声明为全局变量来访问外部作用域变量:
>>>
>>> x = 10 >>> def foobar(): ... global x ... print(x) ... x += 1 >>> foobar() 10
为了提醒您(与类变量和实例变量的表面类似情况不同),实际上需要在外部范围内修改变量的值:
>>>
>>> print(x) 11
您可以使用nonlocal 关键字在嵌套范围内执行类似的操作:
>>>
>>> def foo(): ... x = 10 ... def bar(): ... nonlocal x ... print(x) ... x += 1 ... bar() ... print(x) >>> foo() 10 11