global:更改全局变量
nonlocal:更改函数内部的外层变量

闭包函数:
1 内部函数
2 包含对外部作用域而非全局作用域的引用

f.__closure__


闭包函数的特点:
自带作用域
延迟计算

一 开放封闭原则,对扩展是开放的,对修改是封闭的
二 装饰器,本质是任意可调用对象,被装饰的对象也可以是任意可调用对象
装饰器的功能是

原则:
1 不修改源代码
2 不修改调用方法
目标:添加新功能