闭包 有什么用:在执行函数的时候可以在外部函数中保留参数在内存中 写法:两个函数的嵌套,外部函数返回内部函数的引用,外部函数必须有参数 def 外部函数(参数): def 内部函数(): pass return 内部函数 nonlocal这个就是修改外部参数的值 1. 先写一个万能装饰器def set_fun(func): def call_fun(*args,**kwargs): return func(*args,**kwargs) return call_fun 2. 在要装饰的函数上写一个@xxx@set_fun def test(): print("test") 装饰器的四大结论 装饰前的test函数是由func指向的装饰后的test其实就是call_fun道德上装饰不会去更改原先函数的返回值及调用方式func,装饰前的test,call_fun三个参数必须一致 装饰器传参 三个函数的嵌套,第三层函数返回闭包的外层的引用,第三层必须有参数 def set_args(args); def set_fun(func): def call_fun(*args,**kwargs): return func(*args,**kwargs) return call_fun return set_fun @set_args("xxx")def test(): printl("xxxxxx")