欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python報UnboundLocalError是為什么

林玟書2年前17瀏覽0評論

python報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 = 10>>> def foobar():... global x... print(x)... x += 1>>> foobar()10

這個顯式聲明是為了提醒你(不同于類和實例變量的表面上類似的情況),你實際上是在修改外部變量的值:

>>>>>> print(x)11

您可以使用 關鍵字在嵌套范圍內做類似的事情:

>>>>>> def foo():... x = 10... def bar():... nonlocal x... print(x)... x += 1... bar()... print(x)>>> foo()1011