闭包函数与装饰器
一、名称空间的作用域
1.什么是名称空间
用于储存变量名与变量值关系的地方
2.名称空间的作用域是什么
名称空间的作用范围叫做名称空间的作用域
3.名称空间的作用域的分类
内置名称空间:程序的任何阶段,任何时间都有效(全局有效)
全局名称空间:程序的任何阶段,任何时间都有效(全局有效)
局部名称空间:一般情况下只在局部有效
二、global与nonlocal关键字的使用
1.如何在局部修改全局的数据
局部修改全局数据有两种情况,如果修改的是不可变数据类型,则需要使用global声明,如果修改的是可变类型数据则不需使用global。
情况一:需要使用
情况二:无需使用
2.如何在局部修改外局部数据
三、函数对象
1.函数对象的定义
函数也可以作为”数据“进行使用
2.函数的对象的用法
用法1:函数名可以当作变量名赋值
用法2:函数名可以当作函数的实参
直接打印函数名输出:函数的内存地址
直接打印函数的调用,输出:函数的返回值,return
当一个函数的调用结果传给另一个函数形参时,首先这个函数需要运行,然后再将其返回值传给其他函数运用
用法3:函数名可以当作函数的返回值
用法4:函数可以当作容器类型的元素
四、函数的嵌套调用
1.定义
函数内部调用其他函数
2.嵌套调用死循环
不要互相调用,你的电脑会崩溃的
五、函数的嵌套定义
1.定义
在函数体内部定义其他函数。
2.作用
将复杂的部分隐藏起来,只暴露简单的接口
六、闭包函数
1.定义
在函数体内部定义的函数,并且使用外部函数名称空间的名字
2.函数传参的两种方式
方式1:闭包函数传参
方式2:直接在函数括号内定义形参
七、装饰器
1.装饰器的由来
装饰器是由函数对象,名称空间,闭包函数组合而来的
2.装饰器的核心思想
装饰器的核心思想是,在不改变函数的内部代码以及调用方式的情况下,给函数增加新的功能
3.装饰器的原则
开放封闭原则:对扩展开放,对修改封闭