Python 装饰器
#函数装饰器 &实现函数重载 &functools.wraps回源 #装饰器实现效果:可以在不改变原函数内部代码和调用方式的前提下,实现在函数执行和执行扩展功能。 #适用场景:多个函数系统统一在执行前后自定义一些功能。 import functools def outer(fun): #fun=func1 @functools.wraps(fun) #加了以后,被装饰的函数使用.__name__或者.__doc__的时候就是它自己 #若是不加,被装饰的函数使用nd的时候就指向装饰它的函数里面的方法 def inner(*args, **kwargs): #装饰器里面有个新函数用来“装饰” """"一只大螃蟹""" if len(args) == 1: print('before-1') res = fun(*args, **kwargs) print('after-1') return res else: print('before-2') res=fun(*args, **kwargs) print('after-2') return res return inner #把装饰好的东西返回 @outer #把下面的func1 当作参数传到outer函数里面 def func1(*args): """我爱你宝贝""" value=(11, 22, 33) print('func1函数',value) func1() #func1(5) #func1(5,6) print(func1.__name__) print(func1.__doc__)
建议背会的装饰模板
import functools def outer(fun): @functools.wraps(fun) #__name__ __doc__ 回源 def inner(*args, **kwargs): # 执行前 res = fun(*args, **kwargs) #执行后 return res return inner @outer def func(*args): pass func()
装饰器应用场景列举:网站界面区分是否需要登录
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术