闭包:内部函数对外部函数作用域内变量的引用(非全局变量),则称内部函数为闭包
装饰器
装饰器其实就是一个闭包,把一个函数当作参数然后返回一个替代版函数。
装饰器有2个特性:
一是可以把被装饰的函数替换成其他函数
二是可以在加载模块时候立即执行
通用装饰器:
不定长参数
带返回值
动态语言:可以在运行的过程中,修改代码
可以做的事情:
①为对象动态添加属性
注意为对象动态添加的属性仅适用于该对象
要使其他对象也能用需添加类属性:类名.属性 = xxx
②为类动态添加方法
注意上述方法添加的方法仅适用于该对象
要使其他对象也能用需添加类属性:@classmethod 或 @staticmethod
限制修改对象的属性: