*args **kwargs函数的命名空间。

Posted zhangyajie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了*args **kwargs函数的命名空间。相关的知识,希望对你有一定的参考价值。

什么是命名空间?

命名空间就是,我们给在内存中存放变量与值得对应关系的空间,叫做命名空间。

命名空间一共分为三种:

1,全局命名空间

代码在运行开始,创建的存储,变量与值得关系,的空间叫做全局命名空间。

2,局部命名空间

在函数的运行中,开辟了临时的空间叫做局部命名空间。临时空间没有特殊的含义下,不能被全局变量引用。

3,内置命名空间

内置命名空间中存放了python解释器为我们提供的函数,例如:input,list,print,tuple......他们都是我们拿过来直接可用的内置函数。

 

命名空间的加载与取值顺序?

加载python文件时候,内置命名空间(程序运行前加载)——全局命名空间:从上到下加载--——局部命名空间(程序运行中,调用时候才加载)

 

取值顺序?

在局部调用:局部命名空间——全局命名空间——内置命名空间。

在全局调用:全局命名空间——内置命名空间。

取值顺序(单项):局部名称空间(函数执行时)——全局命名空间——内置命名空间

执行顺序:local——eclose——global——built-in

当程序运行时,代码从上至下一次读取,遇到变量与值,
他会在内存中开辟一个空间,存放变量与值的内存地址的对应关系。
这样存储变量与值得对应关系的空间叫做名称空间(命名空间)。
当解释器遇到函数时,他会将函数名存储在内存中,但是对于函数体莫不关心。
当函数执行时,他会通过函数名找到函数体,然后将函数体里面的变量等对应关系存放在一个
临时开辟的空间中,随着函数的结束,临时的空间关闭,这样的空间叫做临时名称空间。

 

 

作用域 global 和 nonlocal 

作用域就是作用范围,按照生效范围可以分为全局作用域和局部作用域。

全局作用域:包含内置名称空间,全局名称空间,在整个文件的任意位置都能被应用,全局有效。

局部作用域:局部名称空间,只能在局部范围内生效。

global

  1声明一个全局变量。

  2在局部作用域想要对全局作用域的全局变量进行修改时,需要用到golbal(限于字符串,数字)

 

以上是关于*args **kwargs函数的命名空间。的主要内容,如果未能解决你的问题,请参考以下文章

python之路---10 *args **kwargs 命名空间 作用域 函数的嵌套

python之动态参数 *args,**kwargs和命名空间

python010

函数的动态参数,命名空间

函数名传递与名称空间

参数arg、*args、**kwargs三个的区别