python命名空间与作用域的关系

匿名 (未验证) 提交于 2019-12-02 22:54:36

全局,内建<builtins>,如果有函数执行则有局部命名空间,  对象命名空间(包含了class类对象,实例对象,模块对象...),都有命名空间.

命名空间就是变量到对象的映射集合.通过 .__dict__ 内置属性可以看到命名空间内的键值对

 例如:

def test():     pass test.a = 1  #a变量(属性) 放入到函数对象的命名空间内  class SomeClass(object):     pass s = SomeClass() s.a = 123   #a变量被放入s实例的命名空间内 


作用域与命名空间的关系:

作用域查找及限制了是否可以访问到这些命名空间内的属性(变量).

简单来说,作用域是一个查找命名空间以及命名空间内属性的过程;

比如当在函数内调用print 时, 作用域找属性的过程:局部命名空间->函数命名空间->全局命名空间->builtins模块的命名空间.

如果全找不到则NameError 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!