老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

Python中的名称空间和作用域是什么?Python入门

老男孩IT教育

常见问题

2021年6月29日 21:06

名称空间是什么呢?小伙伴们可能了解的不多,在内存中有一块内存空间是用来存储变量名与变量之间绑定关系的空间,这个空间就叫做名称空间,存名字的地方叫做栈区,名称空间只是把栈区分成几个部分,有了名称空间就可以在栈区存放相同的名字。

       名称空间是什么呢?小伙伴们可能了解的不多,在内存中有一块内存空间是用来存储变量名与变量之间绑定关系的空间,这个空间就叫做名称空间,存名字的地方叫做栈区,名称空间只是把栈区分成几个部分,有了名称空间就可以在栈区存放相同的名字。

Python

       名称空间:

       内置名称空间:存放Pyhton解释器自带的名字,如int、float、len,一些函数都是存在这里面,任何模块都可以访问它,存放着一些内置的函数和异常。

       生命周期:在解释器启动时生效,在解释器关闭时失效

       全局名称空间:除了内置和局部的名字之外,其余都存放在全局名称空间,当程序运行时,代码从上到下依次执行,它会将变量与值的关系存储在一个空间中,也就是全局名称空间。

       生命周期:在文件执行时生效,在文件执行结束后失效

       局部名称空间:用于存放函数调用期间函数体产生的名字,函数外面是访问不到临时空间的内容的,随着函数的执行完毕,临时名称空间会释放掉,像这个临时开辟的空间叫局部名称空间(临时名称空间),当函数执行时,内存会临时开辟一个空间,存放函数体里面的代码(变量,代码等)。

       生命周期:在文件执行时函数调用期间时生效,在函数执行结束后失效

       【注意:即使是对同一个函数,即便它是空函数,如果我们对它进行多次调用的话,调用一次产生一个局部名称空间】

       什么时候有名称空间?在调用定义的变量时才有名称空间。

       加载顺序什么样的?由于.py文件是由Python解释器打开的,因此一定是在Python解释器中的内置名称空间加载结束后,文件才开始打开,这个时候才会产生全局名称空间,但文件内有某一个函数被调用的时候,才会开始产生局部名称空间,因此名称空间的加载顺序为:内置–》全局–》局部。

       查找顺序什么样的?由于名称空间是用来存放变量名与值之间的绑定关系的,所以但凡要查找名字,一定是从三者之一找到,查找顺序为:
从当前的所在位置开始查找,如果当前所在的位置为局部名称空间,则查找顺序为:局部–》全局–》内置。

       作用域:

       全局作用域:全局有效,被所有的函数共享,包含内置名称空间和全局名称空间。

       局部作用域:局部有效,临时存储,只包含局部名称空间。

       【注意:作用域关系在函数定义阶段就已经固定了,与调用无关。】       

       Python技术需要学的还有很多,自学起来不够系统,知识点也只是拼凑起来的,所以还是推荐大家来老男孩教育学习,我们的就业率高达80%,只要你认真学,跟着老师走,肯定可以高薪就业,我们在北京、深圳均设有分校,小伙伴们可以根据自身情况选择。

       推荐阅读:

       Python Web的几大框架有哪些?Python入门

       Python加密解密模块的算法有哪些?Python学习

       Python中的类是什么,都有哪些?老男孩Python

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。