名称空间与作用域

1.命名关键字参数
命名关键字参数:在定义函数时,*后定义的参数,如下所示,称之为命名关键字参数
特点:1.命名关键字参数必须按照key=value进行传值
def func(a,b,*,c,d):#其中c/d称之为命名关键字参数
print(a,b)
print(c,d)
func(1,2,c=3,d=4)
 2.混合使用
形参混用的顺序:位置形参、默认形参、*args、命名关键字形参、**kwargs
 名称空间namespace:存放名字的地方,对栈区的划分
有了名称空间之后,可以在栈区中存放相同的名字,详细的名称空间
分为三种:内置名称空间、全局名称空间、局部名称空间
 1.内置名称空间
存放名字,存放Python解释器中的名字
存活周期:Python解释器启动则产生,关闭则销毁
2.全局名称空间
存放名字,只要不是函数内定义、也不是内置的,剩下的都是全局名称空间的名字
存活周期:Python文件执行时产生,Python文件运行结束后销毁
3.局部名称空间
存放名字,在调用函数时,运行函数体代码过程中产生的函数内的名字
存活周期:调用函数时存活,函数调用完毕则销毁
 4.名称空间的加载顺序
内置名称空间》全局名称空间》局部名称空间
5.名称空间的销毁顺序
局部名称空间》全局名称空间》内置名称空间
6.名字的查找优先级:当前所在位置向上一层一层查找
内置名称空间
全局名称空间
局部名称空间
如果当前在局部名称空间:
局部名称空间-》全局名称空间-》内置名称空间
 示范:如果再局部想要修改全局的名字对应的值(不可变类型),需要用global
 nonlocal(了解): 修改函数外层函数包含的名字对应的值(不可变类型)
原文地址:https://www.cnblogs.com/mayrain/p/12526634.html