【Python】装饰器
Python装饰器> »转到****思维导图********> »转到博客园 闭包函数 1.定义在函数内部的函数 2.内部函数内部函数引用了外部函数名称空间作用域的名字 只要满足以上两点都叫做闭包函数 def func(): name = jason' # 先在内部找name没有再往上层找 有了就停止查找 def inner(): print(name) # 现在内部找name没有再往上层找 return inner f = func() # f获取到的是inner的内存地址 f() # 相当于执行 inner() # 函数在定义阶段名字的查找孙旭就已经固定死了,不会因为函数调用位置的变化而变化 给函数传参的两种方式 1.直接传参 def index(name): print(name) 2.闭包 def outter(name): # name = 'jason' def index(): print(name) return index 装饰器 器:就是一个工具 装饰:就是给被装饰对象添加新的功能 开放封闭原则: 开放:对扩展开放 封闭:对修改封闭 装饰器(可调用对象)必须遵循的两个原则: 1.不改变被装饰对象的源代码 2.不改变被装饰对象(可调用对象)调用方法 可调用:callable def new(): print('这是原始函数') def outter(func): def inner(): print('这是内部函数,这里可以加新功能') func() # 这里的func是你想调用的最原始的函数的内存地址,加上()直接调用 print('这是内部函数,这里可以加新功能') return inner # 这里不加括号 返回的是inner函数的内存地址 new = outter(new) # 括号内的new指向的是最原始的new函数的内存地址,前面的new获取的是outter函数的返回值,返回值我们自定义了返回 inner函数的内存地址 # 总结:前面的new获取的是inner的内存地址,后面括号内的new指向的就是最原始的new的内存地址 new() 扩展:import time ...