首頁 >後端開發 >Python教學 >Python 中的 globals()、locals() 和 vars() 之間的主要區別是什麼?

Python 中的 globals()、locals() 和 vars() 之間的主要區別是什麼?

Barbara Streisand
Barbara Streisand原創
2024-11-26 01:08:10208瀏覽

What are the Key Differences Between globals(), locals(), and vars() in Python?

剖析globals()、locals() 與vars() 之間的差異

在Python 的命名空間操作領域內,存在三個基本函數:globals()、locals() 和vars()。這些函數中的每一個都傳回字典,但潛在的差異值得仔細檢查。

globals()

一致地,globals()傳回一個表示名稱空間的字典目前模組。該字典包​​含該模組中定義的所有全域變數、函數和類別。

locals()

與 globals() 不同,locals() 表現出動態行為。當在函數中呼叫時,它會傳回一個包含當前局部變數的字典,包括來自閉包變數的變數。然而,這個字典只是一個臨時快照。只有呼叫 locals() 或存取目前堆疊框架的 f_locals 屬性才會觸發其內容的更新。對 locals() 字典或其對應變數的賦值不會交叉更新。

vars()

Vars() 也傳回一個字典,但它的多功能性擴展到模組和函數名稱空間之外。當不帶參數呼叫時,vars() 的作用與 locals() 類似,傳回目前命名空間的字典。但是,當物件作為參數傳遞時,vars() 會深入研究該物件的 dict 以檢索其屬性。

更新和效果

locals() 和 vars() 都不會自動使它們的字典隨著命名空間的更改而保持最新。變數的賦值不會更新字典,相反,對字典的變更不會傳播到變數。但是,如果存取 f_locals(在 locals() 的情況下)或存取物件的 dict(在 vars() 的情況下),則字典可能會更新。

在總之,globals()、locals() 和 vars() 提供了三個用於在 Python 中操作名稱空間的工具。了解它們的差異使開發人員能夠精確且控制地瀏覽 Python 的執行環境。

以上是Python 中的 globals()、locals() 和 vars() 之間的主要區別是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn