Python 中 dir()、globals() 和 locals() 函式的區別是什麼?
locals() 返回一個包含在區域性作用域中宣告的變數的字典,而 globals() 返回一個包含在全域性作用域中宣告的變數的字典。在全域性作用域中,locals() 和 globals() 返回全域性名稱空間的同一個字典。要觀察這兩個函式的區別,可以在函式內部呼叫它們。例如:
def fun(): var = 123 print "Locals: ", locals() print "Vars: ", vars() print "Globals: ", globals() fun()
這將給出以下輸出:
Locals: {'var': 123} Globals: {'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', 'fun': <function fun at 0x00000000 037E3DD8>, '__doc__': None, '__package__': None}
vars() 函式返回當前名稱空間的字典(如果未帶引數呼叫)或引數的字典。locals() 和 vars() 之間的主要區別在於 vars() 也可以接受一個引數並返回請求物件的字典。例如,如果想要物件的屬性以字典的形式顯示,可以傳入該物件並獲取該例項的屬性字典。
對於物件來說,vars() 函式類似於物件的 __dict__ 屬性。__dict__ 返回物件的所有已定義屬性。例如:
class A(): def __init__(self, id): self.id = id a = A(1) print "__dict__: ", a.__dict__ print "vars(a): ", vars(a)
這將給出以下輸出:
__dict__: {'id': 1} vars(a): {'id': 1}
廣告