Python内置函数globals() 函数与locals()函数简介。
在Python中,函数拥有自己的作用域,或者称为命名空间。在函数内访问某个变量会优先在函数自己的命名空间中进行访问。
而要想知道当前环境中有定义哪些全局变量以及局部变量对于Python来说是可行的的。内置的globals()函数和locals()函数就能完成这样的任务。
locals()函数使用示例
>>> a = "Apple"
>>> b = "Banana"
>>> c = "Watermelon"
def f2():
x = "local variable"
print(locals())
>>> f2()
{'x': 'local variable'}
示例中,在函数f2中,通过locals()函数我们知道了该函数的局部变量只有x.
globals()函数使用示例
>>> a = "Apple"
>>> b = "Banana"
>>> c = "Watermelon"
def f():
x = "local
>>> globals()
{'__name__': '__main__',
'__doc__': 'Automatically created module for IPython interactive environment',
'__package__': None,
'__loader__': None,
'__spec__': None,
'__builtin__': ,
'__builtins__': ,
'_ih': ['',
'a = "Apple"',
'b = "Banana"',
'c = "Watermelon"',
'def f():\n x = "local variable"\n ',
'globals()'],
'_oh': {},
'In': ['',
'a = "Apple"',
'b = "Banana"',
'c = "Watermelon"',
'def f():\n x = "local variable"\n ',
'globals()'],
'Out': {},
'_': '',
'__': '',
'___': '',
'_i': 'def f():\n x = "local variable"\n ',
'_ii': 'c = "Watermelon"',
'_iii': 'b = "Banana"',
'_i1': 'a = "Apple"',
'a': 'Apple',
'_i2': 'b = "Banana"',
'b': 'Banana',
'_i3': 'c = "Watermelon"',
'c': 'Watermelon',
'_i4': 'def f():\n x = "local variable"\n ',
'f': ,
'_i5': 'globals()'}
从示例我们可以看到,全局变量a, b, c均出现在了字典中,同时函数f也是属于全局对象,其也出现在了globals()函数返回的字典中,而函数的局部便来给你x没有出现在字典的key中。
欢迎关注