一.昨日内容回顾
函数:
定义:对功能或者动作的封装
def 函数名(形参):
函数体
函数名(实参)
return: 返回,当程序运行到return的时候,终止函数的执行
一个函数一定拥有返回值
1.什么都不写,返回None
2.只写return,返回None
3. return 值,返回一个值
4.return 值1,值2,值3...返回多个值
参数:
形参:
在函数声明的位置的变量
1.位置参数
2.默认值参数
顺序:位置>默认值
实参:
在函数调用的地方给出的值
1.位置参数
2.关键字参数
3.混合参数
位置参数>关键字参数
传参:把实参赋值给形参的过程
二.今日主要内容
1.动态传参
形参:
1.位置参数
2.默认值参数
3.动态传参
1 *args: 动态接收位置参数
2.**kwargs:动态接收关键字参数
顺序:位置,*args,,默认值,**kwargs
*,**
def func(*args,**kwargs): 无敌传参
pass
*,** 在形参位置:聚合
在实参位置:打散
实参:
1.位置参数
2.关键字参数
3.混合参数
2.名称空间和作用域
名称空间: 保存名字用的
变量,函数,类
1.内置名称空间:python自己,print,input,len
2.全局名称空间:你写的代码从上到下
3.局部名称空间:函数,类,方法,其他模块,对象
作用域
全局作用域
内置 + 全局
局部作用域
局部名称空间
从局部找全局可以,但是从全局找局部是不可以的
globals() 查看全局作用域中的名字
locals() 查看当前作用域中的名字
3.函数的嵌套(难点)
每一层都会产生独自的名称空间
4. nonlocal global
global : 在局部引入全局的内容,可以升华一个变量为全局变量
nonlocal: 在局部,引入上一层名称空间中的变量,如果没有,继续上一层