函数进阶
动态位置参数以及动态关键字参数:
位置 关键字 动态位置 动态关键字
def func(a,*args,b,**kwargs): print(a,b,args,kwargs) func(1,2,3,4,bb=1,cc=3,)
函数:
动态: 动态位置参数 *args 动态关键字参数 **kwargs 位置 > 动态位置参数 > 默认(关键字)参数 > 动态关键字参数
函数的嵌套:
def f(): # a = 10 # print(a) # def f1(): # b = 20 # print(b) # f1() # f()
局部空间:
def func(): # 函数里的是局部空间 # b = 5 # print(b) #print() #内置的就是python本身自带的东西 # input() #内置python本身自带的东西 print(locals()) # 查看局部作用域中的变量和内容 print(globals()) # 查看全局作用域中的变量和内容
名称空间:
2. 名称空间: 局部命名空间 全局命名空间 内置命名空间 加载顺序: 内置 > 全局 > 局部 取值顺序: 局部 > 全局 > 内置 作用域: 全局作用域: 内置 + 全局 局部作用域: 函数局部
global与nonlocal:
global: 可变数据类型在函数中可以直接操作,不可变数据类型才需要使用global nonlocal: nonlocal 改变最近的父级变量, 如果上级没有能够改变的就继续向上走,直到最外层函数就停止了. 函数: 将一个需求封装后调用,优点:除去重复代码.