闭包
1.闭包函数必须有内嵌函数
2.内嵌函数必须要引用外层函数的变量
3.闭包函数返回内嵌函数的地址(函数名称)
__closure__查看是否是闭包,结果为None则不是闭包
装饰器的本质:一个闭包函数
装饰器的作用:在不修改原函数及其调用方式的情况下对原函数功能进行扩展。
1.@property内置装饰函数,把一个方法调用方式变成属性调用方式
2.访问使用@property装饰器装饰的函数可以直接调用函数
3.@property只能修饰不带参数的方法
4.@property装饰器修饰私有方法getter和setter方法。和控制属性的访问权限–只读