當前位置:成語大全網 - 新華字典 - #擡擡小手學Python# Python 之作用域下的 global 和 nonlocal 關鍵字

#擡擡小手學Python# Python 之作用域下的 global 和 nonlocal 關鍵字

該部分內容涉及 Python 變量作用域相關知識,變量作用域指的是變量的有效作用範圍,直接理解就是 Python 中的變量不是任意位置都可以訪問的,有限制條件。

壹般情況下變量的作用域變化範圍是 塊級、函數、類、模塊、包等,級別是從小到達。Python 中是沒有塊級作用域的,所以我們在寫代碼的時候,下面的代碼是正確的。

在 Python 中常見的塊級作用域有 if 語句、for 語句、while 語句、with 上下文語句。

上文已經提及了作用域是 Python 程序可以直接訪問壹個變量的作用範圍,Python 的作用域壹***有 4 種,分別如下:

壹個比較經典的案例如下:

在 Python 中變量尋找的順序是從內到外,先局部,然後外部,在全局,在內建,這種規則叫做 LEGB 規則 。

增加以下學習的趣味性,妳可以研究下述代碼中變量是如何變化的。

定義在 函數內部 的變量擁有壹個局部作用域,定義在 函數外部 的變量擁有全局作用域。

輸出結果,函數內部是 123 ,函數外部依舊是 0 。

如果希望函數內部(內部作用域)可以修改外部作用域的變量,需要使用 global 關鍵字。

此時輸出的就都是 123 了,還有壹點需要註意,在函數內容如果希望修改全局變量的值, global 關鍵字壹定要寫在變量操作前。

該代碼會出現語法錯誤:

全局變量還存在壹個面試真題,經常出現,請問下述代碼運行結果。

如果要修改嵌套作用域(Enclosing 作用域)中的變量,需要 nonlocal 關鍵字,測試代碼如下:

輸出結果自行測試,註意 nonlocal 關鍵字必須是 Python3.X+版本,Python 2.X 版本會出現語法錯誤:

在多重嵌套中, nonlocal 只會上溯壹層,如果上壹層沒有,則會繼續上溯,下述代碼妳可以分別註釋查看結果。

局部變量和全局變量具體有哪些,可以通過 locals() 和 globals() 兩個內置函數獲取。

本篇博客為大家說明了 Python 的作用域,並且對 global 和 nonlocal 關鍵字進行了學習,希望對妳有所幫助。