所有的变量都保存在命名空间中
命名空间实质是一个字典,是一个专门用来存储变量的字典,也可以存储函数
locals()函数可以获取当前作用域的命名空间,并且返回一个字典。
b=20
a=30
scope=locals()
print(scope)
输出
{‘name’: ‘main’, ‘doc’: None, ‘package’: None, ‘loader’: <_frozen_importlib_external.SourceFileLoader object at 0x00000222640E08B0>, ‘spec’: None, ‘annotations’: {}, ‘builtins’: <module ‘builtins’ (built-in)>, ‘file’: ‘F:/python/命名空间.py’, ‘cached’: None, ‘b’: 20, ‘a’: 30, ‘scope’: {…}}
对于上程序还有:
print(a)=20
print(scope[‘a’])=20
因为命名空间相当于字典,所以还可以有
scope[‘c’]=123
向该字典中添加键值对,相当于添加了一个全局变量。该添加方法计算机会有错误提示但任然可以运行。但只有在全局时才有用,当在一个定义的函数内时则报错无法生效打印。
当locals()在一个函数内部且函数内没有数据时,则等于一个空字典。
globals()可以在任意位置获得全局的命名空间,存储在一个变量后可以输出全局命名空间。