函数对象 函数嵌套 名称空间与作用域 闭包函数
一函数对象
函数是第一类对戏那个,即函数可以当作数据传递
1.可以被引用
2.可以当作参数传递
3.返回值可以是函数
二函数嵌套
def max(x,y): return x if x > y else y def max4(a,b,c,d): res1=max(a,b) res2=max(res1,c) res3=max(res2,d) return res3 print(max4(1,2,3,4))
三名乘空间与作用域
1.名称空间:指的就是存放值与内存地址绑定关系的地方。
内置名称空间
存放的是python解释器自带的名字
产生:python解释器启动时则产生
销毁:python解释器关闭时则销毁
全局名称空间:在顶级定义的名字
产生:执行python程序时产生
销毁:python程序执行完毕后销毁
局部名称空间:在函数内定义的名字
产生:在函数调用时临时产生
销毁:在函数调用完毕后销毁
三种名称空间产生先后顺序:内置》全局》局部
查找名字的顺序:从当前想外查找 局部》全局》内置
2.作用域:指的是作用范围
全局作用域:包含内置与全局名称空间的名字
特点:全局存活,全局有效
局部作用域:包含局部名称空间的名字
特点:临时存活,局部有效
!!!作用域关系时在函数定义阶段就已经固定死了,与调用位置无关。
四闭包函数
内部函数包含对外部作用域而非全局作用域的引用
闭包函数的意义与应用
闭包的意义:返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹了一层作用域,这使得,该函数无论在何处调用,优先使用自己外层包裹的作用域 #应用领域:延迟计算(原来我们是传参,现在我们是包起来)