locals()方法更新并返回當(dāng)前本地符號(hào)表的字典。
符號(hào)表是由編譯器維護(hù)的數(shù)據(jù)結(jié)構(gòu),其中包含有關(guān)程序的所有必要信息。
這些包括變量名,方法,類等。
符號(hào)表主要有兩種。
全局符號(hào)表
本地符號(hào)表
一個(gè)Global 符號(hào)表存儲(chǔ)與程序的全球范圍內(nèi)的所有信息,并使用Python在訪問(wèn)globals()方法。
全局范圍包含所有函數(shù),與任何類或函數(shù)都沒(méi)有關(guān)聯(lián)的變量。
同樣,Local 符號(hào)表存儲(chǔ)與程序的本地范圍有關(guān)的所有信息,并使用locals()方法在Python中進(jìn)行訪問(wèn)。
局部作用域可以在函數(shù)內(nèi),類內(nèi)等。
推薦閱讀: Python的命名空間和范圍
locals()方法的語(yǔ)法為:
locals()
locals()方法不帶任何參數(shù)。
locals()方法更新并返回與當(dāng)前本地符號(hào)表關(guān)聯(lián)的字典。
locals()
運(yùn)行該程序時(shí),輸出為:
{'In': ['', 'locals()'], 'Out': {}, '_': '', '__': '', '___': '', '__builtin__':, '__builtins__':, '__name__': '__main__', '_dh': ['/home/repl'], '_i': '', '_i1': 'locals()', '_ih': ['', 'locals()'], '_ii': '', '_iii': '', '_oh': {}, '_sh':, 'exit':, 'get_ipython':>, 'quit':}
注意:全局環(huán)境的globals()和locals()符號(hào)表是相同的。
def localsNotPresent(): return locals() def localsPresent(): present = True return locals() print('localsNotPresent:', localsNotPresent()) print('localsPresent:', localsPresent())
運(yùn)行該程序時(shí),輸出為:
localsNotPresent: {} localsPresent: {'present': True}
def localsPresent(): present = True print(present) locals()['present'] = False; print(present) localsPresent()
運(yùn)行該程序時(shí),輸出為:
True True
與globals()字典(它反映對(duì)實(shí)際全局表的更改)不同,locals()字典可能不會(huì)更改locals表中的信息。