首頁  >  文章  >  後端開發  >  Python 中的 globals()、locals() 和 vars() 有什麼不同?

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

Susan Sarandon
Susan Sarandon原創
2024-11-17 02:16:03307瀏覽

How Do globals(), locals(), and vars() Differ in Python?

探索globals()、locals() 和vars() 的細微差別

Python 提供了三個內省函數,可以深入了解目前命名空間:globals()、locals() 和vars()。每個都傳回一個包含特定資訊的字典。

globals()

globals() 總是傳回目前模組名稱空間的字典。它提供對模組內所有全域定義名稱的存取。

locals()

locals() 是動態的,其行為取決於範圍。

  • 在函數內: locals() 傳回函數名稱空間的字典。它包括呼叫時的局部變數以及閉包變數。字典的更新反映在局部變數中。但是,對傳回字典的賦值不會修改局部變數。

例如,在函數中:

def example():
    x = 1
    l = locals()
    l['x'] = 3
    print(x)  # Outputs 1, not 3
  • 函數外部: locals() 傳回實際的命名空間字典。對字典所做的更改會反映在命名空間中,反之亦然。

例如:

class Test:
    a = 'one'
    huh = locals()
    b = 'two'
    huh['c'] = 'three'
    print(huh)  # Outputs {'a': 'one', 'b': 'two', 'c': 'three', 'huh': {...}}

vars()

vars() 接受一個物件作為其參數並傳回其vars() 接受一個物件作為其參數並傳回其 dict 屬性。通常,物件的

dict
class Test:
    a = 'one'
    b = 'two'
    huh = vars(self)
    c = 'three'
    huh['d'] = 'four'
儲存其屬性資料。因此,向 vars() 提供物件可以存取其屬性。

在此範例中,vars(self) 傳回 Test 實例的

dict 屬性,允許存取它的屬性如「a」、「b」和「c」。

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

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