在python环境中我们输出一个没有声明的变量a 为什么会报name 'a' is not defined。为什么是name 而不是variable。
因为在python中把所有的函数名,变量名、类型名等等标识符都称为名字。名字总是在名字空间中与一个对象关联。名字本身并不知道目标的具体信息,它仅仅负责"指路"
>>> a = 10
>>> globals()
{'__spec__': None, 'a': 10, '__name__': '__main__', '__loader__':, '__builtins__':, '
__package__': None, '__doc__': None}
上面赋值了一个值10,并将于变量‘a’关联起来,也就是通过赋值语句我们就得到{‘a’:10,..}这样的对象关联关系。并且还是以dict形式实现的。
通过名字访问对象时,就从该名字空间中查找其关联的目标对象。我们完全可以绕开赋值语句,直
接在名字空间中添加名字和对象的关联。
>>> globals()['b'] = 100
>>> b
100
名字空间不止可以保存a这样的变量,他可以是认识类型。要知道python是把一切都当做对象的。
网友评论