首頁 > 後端開發 > Python教學 > Python 函數如何在沒有「global」關鍵字的情況下存取全域變數?

Python 函數如何在沒有「global」關鍵字的情況下存取全域變數?

Patricia Arquette
發布: 2024-12-16 08:53:13
原創
518 人瀏覽過

How Can a Python Function Access a Global Variable Without the `global` Keyword?

無需全域關鍵字即可存取全域變數

在 Python 中,全域變數與局部變數儲存在單獨的命名空間中。要存取函數內的全域變量,通常使用 global 關鍵字。但是,在某些情況下,無需明確聲明全域變數即可被存取。

考慮以下程式碼:

在此程式碼中,getJoin 函數傳回連接的元素子清單的,它是全域變數。令人驚訝的是,該函數無需使用全域關鍵字即可存取 sub。

為什麼會發生這種情況?

動態作用域

Python 使用動態作用域,這意味著在當前作用域中搜尋變量,然後在封閉的作用域中搜尋變量,直到找到為止。在getJoin函數中,本地沒有找到變數sub。因此,它會搜尋封閉範圍(即全域範圍),並找到其中的子變數。

變數綁定

當存取變數時,它會被綁定到一個記憶體位置。在 sub 的情況下,它會綁定到包含「0」列表的記憶體位置。當解釋器遇到賦值語句sub = ['0', '0', '0', '0'].

函數存取

當呼叫getJoin函數時,它會執行並且解釋器會搜尋它需要的變數。由於 sub 在本地未找到,因此它會在封閉範圍中尋找並找到已綁定的 sub 變數。然後該函數存取儲存在該記憶體位置的數據,其中包含“0”列表。

全域關鍵字

當您想要修改時,全域關鍵字很有用或在本地上下文中建立全域變數。但是,如果全域變數已經綁定到封閉範圍內的記憶體位置,則不嚴格要求存取全域變數。

以上是Python 函數如何在沒有「global」關鍵字的情況下存取全域變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板