無需全域關鍵字即可存取全域變數
在 Python 中,全域變數與局部變數儲存在單獨的命名空間中。要存取函數內的全域變量,通常使用 global 關鍵字。但是,在某些情況下,無需明確聲明全域變數即可被存取。
考慮以下程式碼:
在此程式碼中,getJoin 函數傳回連接的元素子清單的,它是全域變數。令人驚訝的是,該函數無需使用全域關鍵字即可存取 sub。
為什麼會發生這種情況?
動態作用域
Python 使用動態作用域,這意味著在當前作用域中搜尋變量,然後在封閉的作用域中搜尋變量,直到找到為止。在getJoin函數中,本地沒有找到變數sub。因此,它會搜尋封閉範圍(即全域範圍),並找到其中的子變數。
變數綁定
當存取變數時,它會被綁定到一個記憶體位置。在 sub 的情況下,它會綁定到包含「0」列表的記憶體位置。當解釋器遇到賦值語句sub = ['0', '0', '0', '0'].
函數存取
當呼叫getJoin函數時,它會執行並且解釋器會搜尋它需要的變數。由於 sub 在本地未找到,因此它會在封閉範圍中尋找並找到已綁定的 sub 變數。然後該函數存取儲存在該記憶體位置的數據,其中包含“0”列表。全域關鍵字
當您想要修改時,全域關鍵字很有用或在本地上下文中建立全域變數。但是,如果全域變數已經綁定到封閉範圍內的記憶體位置,則不嚴格要求存取全域變數。以上是Python 函數如何在沒有「global」關鍵字的情況下存取全域變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!