【Python基础】当变量有值时,为什么会出现UnboundLocalError?
生活随笔
收集整理的這篇文章主要介紹了
【Python基础】当变量有值时,为什么会出现UnboundLocalError?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?先來看兩段代碼。
#?代碼段一 x?=?10def?bar():print(x)bar() # 輸出 10 #?代碼段二 x?=?10def?foo():print(x)x?+=?1foo() # 輸出 Traceback (most recent call last):... UnboundLocalError:?local?variable?'x'?referenced?before?assignment????可以看到,第一段代碼能夠正常工作,然而第二段似乎有些令人意外,為什么呢?
????這是因為在對作用域中的變量進行賦值時,該變量將成為該作用域的局部變量,并隱藏外部作用域中相同命名的變量。我們來看第二段中的代碼,foo函數中的最后一個語句給x分配了一個新值,編譯器會將其識別為局部變量。因此,前面的print(x)嘗試打印未初始化的局部變量時就會導致錯誤。那想實現在函數內修改函數外部同名變量的功能,應該怎么辦呢?
????我們可以通過將x聲明為全局來訪問外部作用域中的變量:
????
? ? 通過global關鍵字的顯式聲明,就可以在函數作用域內訪問外部作用域中的同名變量并進行值的修改。當然我們也可以通過nonlocal關鍵字在嵌套作用域中執行類似的操作:
獲取一折本站知識星球優惠券,復制鏈接直接打開:
https://t.zsxq.com/y7uvZF6
本站qq群704220115。
加入微信群請掃碼:
總結
以上是生活随笔為你收集整理的【Python基础】当变量有值时,为什么会出现UnboundLocalError?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【NLP】CS224N课程笔记|词向量I
- 下一篇: 【机器学习基础】你应该知道的LightG