函数(三)
函数对象
函数名就是存放了函数的内存地址,存放了内存地址的变量都是对象,即 函数名的调用就是函数对象直接的应用
函数对象的应用
#1 可以直接引用
#2 可以当作函数参数传递
#3 可以作为函数的返回值
#4 可以做为容器类型的元素(比如在字典中,value对应函数名,输入key就可以直接调用到value,在加上()就可以调用函数。
名称空间
名称空间:存放名字和内存空间地址对应关系的容器
作用:解决由于名字有限,导致名字重复发送冲突的问题
三种名称空间
①Bulit-in :内置名称空间;系统级,一个;随解释器执行而产生,解释器停止而销毁
②Global:全局名称空间;文件级,多个;随所属文件加载而产生,文件运行完毕而销毁
③ Local:局部名称空间;函数级,多个;随所属函数执行而产生,函数执行完毕而销毁
del 变量名:可以移除最近的变量名与内存空间地址的对应关系。
加载顺序: Bulit in,Global,Local
作用域
作用域:名字起作用的范围
作用:解决同名字可以共存的问题
四种作用域
① Bulit-in:内置作用域,所有文件函数
② Global:全局作用域。当前文件所有函数
③ Enclosing:嵌套作用域,当前函数与当前函数的内部函数
④ Local:局部作用域,当前函数
闭包
closure:被包裹的函数,称之为闭包
完整的闭包结构:1.将函数进行闭包处理;2.提升函数名的作用域,将内部函数作为外部函数的返回值