day 11
01.可变长参数
-
型参
-
*型参;用元组接收
*加(型参名);只接收多余的实参,不能接收关键字实参
-
**型参;用字典接收
**加(型参名);只接收多余的关键字实参
def f1(*args,**kwargs) # 可以接收所有的实参
-
-
实参
-
*型参;
*加型参名;将元组或列表内的内容解压缩为位置型参
-
**型参;
**加实参名;将字典内的内容当成关键字实参解压出来
-
02.函数对象==函数名 #函数名加括号就是在调用
python中一切皆对象,所有对象都可以做一下功能
- 被引用
- 当作容器内的元素
- 作为函数的实参
- 作为函数的返回值
03.函数嵌套
- 函数内部定义的函数,不能在外部直接调用
04.名称空间
名称空间转名用来存名称
-
内置名称空间
数据类型自带内置方法,python解释器也有内置方法
-
全局名称空间
除了内置和局部都叫全局
-
局部名称空间
函数内部定义的都叫局部
名称空间的生成顺序
- 内置名称空间;python解释器启动时创建
- 全局名称空间;执行文件代码时创建
- 局部名称空间;调用函数时创建
名称空间的寻找顺序
- 先从当前所在位置寻找,找不到时 局部--》全局--》内置--》报错(不会你想寻找)
05.作用域
文件执行时,才会对变量进行付值,在变量调用时再从内存地址当中寻找
局部空间在函数执行时开放,函数执行结束后关闭
定义好的变量名一定会指向一个内存地址,
不同作用域之间的变量之间没有任何关系(不包含可变数据类型)
-
局部作用域不能修改全局作用域的数据
global x # 可以让下面的x作用于全剧作用域
-
局部和局部作用域之间也不能修改
nonlocal x # 可以让下面的x作用于顶层函数的局部