Python内置函数locals(), 提供了基于字典的访问局部变量的方式。
Python使用叫做名字空间的东西来记录变量的轨迹。名字空间只是一个 字典,它的键字就是变量名,字典的值就是那些变量的值。实际上,名字空间可以象Python的字典一样进行访问
。警告:
不要修改locals()返回的字典中的内容;改变可能不会影响解析器对局部变量的使用。
在函数体内调用locals(),返回的是自由变量(Free variables)。修改自由变量不会影响解析器对变量的使用。不能在类区域内返回自由变量。
在函数中的确是不能通过locals()来改变已有变量的值,但可以创建变量,并且改变使用locals()创建的变量值
看结果
的确是 locals() 返回的是自由变量, 没有影响到局部变量的值,但是如果不使用函数呢
看结果
这是什么情况?所有变量其实都是全局变量,但是locals()改变了变量的值!其实内置函数globals()提供了对全局变量的访问。