文章目錄
- 概要
- 基礎用法
概要
-
globals()和locals()都是內置函數,用于獲取當前命名空間中的變量。
-
globals()函數返回全局命名空間的字典,包括全局變量、函數和模塊。它返回一個表示全局命名空間的字典。你可以使用該函數來查看和修改全局命名空間中的變量。
-
locals()函數返回當前命名空間的字典,包括局部變量、函數和模塊。它返回一個表示當前命名空間的字典。如果在全局作用域外調用locals(),它將返回全局命名空間。你可以使用該函數來查看和修改當前命名空間中的變量。
-
返回值:返回一個字典,包含當前全局作用域或者局部變量的所有變量和它們的值。字典的鍵是變量名,值是對應變量的值。
基礎用法
代碼演示:
x = 10
y = 20def add(a, b):z = a + bprint(locals())add(x, y)
print(globals())# 輸出結果:
# {'a': 10, 'b': 20, 'z': 30}
# {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <...>, '__spec__': None, '__annotations__': {}, '__builtins__': <...>, 'x': 10, 'y': 20, 'add': <function add at 0x...>}
你可以看到,在函數內部調用locals()函數時,返回的字典中包含了局部變量a、b和z。而在函數外部調用globals()函數時,返回的字典中包含了全局變量x、y和函數add的定義。
注意
:locals()函數返回的字典是對當前命名空間的引用,對其的修改會直接影響到當前命名空間中的變量。而globals()函數返回的字典是對全局命名空間的引用,對其的修改會直接影響到全局命名空間中的變量。因此,在使用這兩個函數時,需要謹慎操作,以防止意外修改變量。通常情況下,推薦使用局部命名空間來封裝和管理變量,只在必要時才使用globals()和locals()函數。