全局,内建<builtins>,如果有函数执行则有局部命名空间, 对象命名空间(包含了class类对象,实例对象,模块对象...),都有命名空间.
命名空间就是变量到对象的映射集合.通过 .__dict__ 内置属性可以看到命名空间内的键值对
例如:
def test(): pass test.a = 1 #a变量(属性) 放入到函数对象的命名空间内 class SomeClass(object): pass s = SomeClass() s.a = 123 #a变量被放入s实例的命名空间内 作用域与命名空间的关系:
作用域查找及限制了是否可以访问到这些命名空间内的属性(变量).
简单来说,作用域是一个查找命名空间以及命名空间内属性的过程;
比如当在函数内调用print 时, 作用域找属性的过程:局部命名空间->函数命名空间->全局命名空间->builtins模块的命名空间.
如果全找不到则NameError
转载请标明出处:python命名空间与作用域的关系
文章来源: python命名空间与作用域的关系