函数
函数名是函数的名字,本质是:变量,特殊的变量
高阶函数:
函数的接受参数是一个函数名
函数的返回值是一个函数名
满足上述任意以个条件都是高阶函数
函数名(): 执行此函数。
单独打印函数名就是内存地址。
函数名可以作为容器类数据的元素
函数名可以作为参数
函数名可以作函数的返回值
闭包
就是内层函数对外层函数(非全局)变量的引用
如何判断是否闭包:
内层函数的名字.__closure__如果打印出cell则证明有闭包过程
闭包用处:
当函数开始执行时,如果当函数遇到闭包,他有一个机制,他会永远开辟一个内存空间,将闭包中的内存空间等值放入其中,不会随着函数的执行完毕而消失
节省内存空间
装饰器:
本质就是函数,功能是为其他函数添加附属功能
装饰器 = 高阶函数 + 函数的嵌套 + 闭包器
原则:
不能修改被装饰函数的源代码
不修改被装饰函数的调用方式