Python 3 的「nonlocal」關鍵字:深入探究
「nonlocal」關鍵字在Python 3 中具有重要用途,提供對在封閉範圍內宣告的變量,而不使用保留的全域關鍵字。這種細緻入微的功能允許對巢狀函數內的變數參考進行特殊控制。
揭示非局部的角色
考慮以下不帶「nonlocal」關鍵字的程式碼片段:
x = 0 def outer(): x = 1 def inner(): x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
執行時,此程式碼會產生以下結果輸出:
inner: 2 outer: 1 global: 0
如您所觀察到的,內部函數中的變數「x」獨立於外部函數中的變數「x 」。這是因為內部函數的「x」變數在自己的作用域內優先。
相反,引入「nonlocal」關鍵字會改變行為:
x = 0 def outer(): x = 1 def inner(): nonlocal x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
透過此修改,輸出變更為:
inner: 2 outer: 2 global: 0
「nonlocal ”關鍵字允許內部函數引用和修改在外部聲明的“x”變數
非局部與全局
必須注意“非局部”和“全局”之間的區別。雖然這兩個關鍵字都允許從嵌套範圍存取變量,但它們有不同的用途。 「nonlocal」限制對僅在封閉範圍中定義的變數的訪問,而「global」則提供對全域範圍中定義的變數的存取。
為了更好地理解,請考慮使用「global」關鍵字的以下程式碼:
x = 0 def outer(): x = 1 def inner(): global x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
在這種情況下,輸出變成:
inner: 2 outer: 1 global: 2
「global」關鍵字將「x」全域綁定到true宣告的變量,覆蓋任何具有相同名稱的局部或封閉變數。
結論
Python 3 中的「nonlocal」關鍵字提供了一個強大的工具來管理變數引用巢狀函數。它使在封閉範圍內聲明的變數可以在內部範圍內存取和修改,從而對複雜程式碼結構中的變數使用提供更精細的控制。
以上是Python 3 的「nonlocal」關鍵字與巢狀函數作用域中的「global」有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Tomergelistsinpython,YouCanusethe操作員,estextMethod,ListComprehension,Oritertools

在Python3中,可以通過多種方法連接兩個列表:1)使用 運算符,適用於小列表,但對大列表效率低;2)使用extend方法,適用於大列表,內存效率高,但會修改原列表;3)使用*運算符,適用於合併多個列表,不修改原列表;4)使用itertools.chain,適用於大數據集,內存效率高。

使用join()方法是Python中從列表連接字符串最有效的方法。 1)使用join()方法高效且易讀。 2)循環使用 運算符對大列表效率低。 3)列表推導式與join()結合適用於需要轉換的場景。 4)reduce()方法適用於其他類型歸約,但對字符串連接效率低。完整句子結束。

pythonexecutionistheprocessoftransformingpypythoncodeintoExecutablestructions.1)InternterPreterReadSthecode,ConvertingTingitIntObyTecode,whepythonvirtualmachine(pvm)theglobalinterpreterpreterpreterpreterlock(gil)the thepythonvirtualmachine(pvm)

Python的關鍵特性包括:1.語法簡潔易懂,適合初學者;2.動態類型系統,提高開發速度;3.豐富的標準庫,支持多種任務;4.強大的社區和生態系統,提供廣泛支持;5.解釋性,適合腳本和快速原型開發;6.多範式支持,適用於各種編程風格。

Python是解釋型語言,但也包含編譯過程。 1)Python代碼先編譯成字節碼。 2)字節碼由Python虛擬機解釋執行。 3)這種混合機制使Python既靈活又高效,但執行速度不如完全編譯型語言。

UseeAforloopWheniteratingOveraseQuenceOrforAspecificnumberoftimes; useAwhiLeLoopWhenconTinuingUntilAcIntiment.forloopsareIdealForkNownsences,而WhileLeleLeleLeleLeleLoopSituationSituationsItuationsItuationSuationSituationswithUndEtermentersitations。

pythonloopscanleadtoerrorslikeinfiniteloops,modifyingListsDuringteritation,逐個偏置,零indexingissues,andnestedloopineflinefficiencies


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。