Python 中的 `globals()`、`locals()` 和 `vars()` 有什麼不同?

Susan Sarandon
發布: 2024-11-17 20:22:02
原創
653 人瀏覽過

What's the Difference Between `globals()`, `locals()`, and `vars()` in Python?

理解globals()、locals() 和vars() 之間的區別

在Python 中,globals()、locals( ) 、 和vars() 是提供對目前程式的命名空間的洞察的函數。讓我們探討它們的差異:

globals()

  • 用途:傳回全域命名空間的字典。
  • 行為:一致,總是傳回目前模組的命名空間字典。

locals()

  • 用途:取得表示目前命名空間的字典。
  • 行為:動態,取決於呼叫者的上下文。
  • 函數內部:傳回包含目前局部變數和任何閉包變數的字典。由於與幀物件的 f_locals 屬性關聯,同一堆堆疊框架內的多個呼叫會傳回相同的字典。對此字典的更新會反映在本地命名空間中,但直接向字典賦值並不會修改對應的本地變數。
  • 函數外部:傳回充當字典的實際字典目前命名空間。對此字典的變更與命名空間同步,反之亦然。

vars()

  • 用途:接受一個物件作為參數,並傳回該物件的dic 屬性。
  • 行為:

    • 不帶參數,它傳回目前命名空間的dict(類似函數外部的locals ())。
    • 當提供一個物件時,它會檢索該物件的 __dict__,通常包含其屬性資料。
    • 對傳回的字典的更新會影響物件的屬性,反之,物件屬性的變更會反映在字典中。

重點說明:

locals() 和 vars() 的行為可能會因 Python 版本和實作而異。在 CPython 2.x 中,locals() 可以透過使用「exec 'pass'」以不同的方式運作。

以上是Python 中的 `globals()`、`locals()` 和 `vars()` 有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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