PYTHON 闭包,装饰器

这两天学习的心得,看了很多视频文章,终于差不多能理解了,给大家分享一下,有错误请指出!
1.闭包:首先就是两个函数的嵌套,然后外面一层的函数就叫外层函数,嵌套里面的叫内层函数,再然后就是内层函数使用了外层函数的变量,外层函数返回内层函数的引用(即内层函数的地址)
例:
PYTHON 闭包,装饰器
PYTHON 闭包,装饰器
根据上面的代码,第九行执行完,就只打印’g’,以及返回内层函数引用,然后执行第10行时,才打印了“–这是权限验证1–”和“–这是权限验证2–”
可以自己把代码敲在pycharm中,自己单步调试看看运行过程。
2. 装饰器
装饰器就是通过闭包技术对函数进行功能的补充
直接看程序讲解
PYTHON 闭包,装饰器
PYTHON 闭包,装饰器
装饰器程序的执行就第14行,大家可以这样理解:
PYTHON 闭包,装饰器
其实装饰函数做的就是test1 =set_func(test1),这时指向内层函数了,然后在执行test(100)

首先去执行装饰器函数set_func(func),根据闭包技术原理,执行完之后返回一个内层函数引用(即内层函数地址),接着执行test1(100),相当于test1此时指向内层函数,并且将100传给内层函数中的func()函数,即被装饰函数,这个过程大家要仔细考虑考虑