当前位置: 首页 > wzjs >正文

网站推广软件免费营销者主要通过制作

网站推广软件免费,营销者主要通过制作,衡水建网站的公司,汉中专业网站建设📘 Python 装饰器进阶指南 一、装饰器本质 ✅ 本质概念 Python 装饰器的本质是 函数嵌套 返回函数,它是对已有函数的增强,不修改原函数代码,使用语法糖 decorator 实现包裹效果。 def my_decorator(func):def wrapper(*args, …

📘 Python 装饰器进阶指南


一、装饰器本质

✅ 本质概念

Python 装饰器的本质是 函数嵌套 + 返回函数,它是对已有函数的增强,不修改原函数代码,使用语法糖 @decorator 实现包裹效果。

def my_decorator(func):def wrapper(*args, **kwargs):print("Before")result = func(*args, **kwargs)print("After")return resultreturn wrapper@my_decorator
def say_hello():print("Hello!")

✅ 装饰器其实是这样的调用:

say_hello = my_decorator(say_hello)

二、元数据保持:functools.wraps

❗ 问题

普通装饰器会丢失原函数的元数据,如 __name__, __doc__ 等。

✅ 解决方案:使用 functools.wraps

from functools import wrapsdef my_decorator(func):@wraps(func)def wrapper(*args, **kwargs):print("Running:", func.__name__)return func(*args, **kwargs)return wrapper

🌟 好处

  • 文档自动生成工具能识别原始函数
  • 保持调试友好、函数签名保留

三、反射 + 动态设置装饰器

✅ 场景:你不想在函数上一个个手动写 @装饰器,而是运行时自动批量装饰。

示例:动态为某类中所有特定方法添加装饰器

def my_log_decorator(func):@wraps(func)def wrapper(*args, **kwargs):print(f"[LOG] {func.__name__} 被调用")return func(*args, **kwargs)return wrapperclass MyClass:def method_a(self): print("A")def method_b(self): print("B")# 动态装饰
for name in ['method_a', 'method_b']:method = getattr(MyClass, name)setattr(MyClass, name, my_log_decorator(method))obj = MyClass()
obj.method_a()

四、进阶实践:Django DRF + 动态文档装饰器

✅ 背景

使用 drf-spectacular 时,需要为 ViewSet 方法添加 @extend_schema,但方法多、内容重复,适合动态处理。

💡 做法:定义映射 + 动态应用装饰器

from drf_spectacular.utils import extend_schema
from functools import wraps
from rest_framework import viewsetsclass SchemaModelViewSet(viewsets.ModelViewSet):schema_summary_mapping = {'list': "获取{name}列表",'retrieve': "获取单个{name}",'create': "创建{name}",'update': "更新{name}",'partial_update': "局部更新{name}",'destroy': "删除{name}"}# 动态应用装饰器
def _apply_schema_decorators():for method_name, summary_tpl in SchemaModelViewSet.schema_summary_mapping.items():if hasattr(SchemaModelViewSet, method_name):base_method = getattr(viewsets.ModelViewSet, method_name)@wraps(base_method)def dynamic_wrapper(*args, **kwargs):return base_method(*args, **kwargs)decorated = extend_schema(summary=summary_tpl.format(name="对象"))(dynamic_wrapper)setattr(SchemaModelViewSet, method_name, decorated)_apply_schema_decorators()

✅ 优点

  • 方法不需要手动一个个写装饰器
  • 支持格式化 summary,按模型/资源名称自动生成
  • 保持方法原始签名与元数据,文档准确生成

五、进阶技巧汇总

技巧说明
@wraps(func)保持元数据,推荐用于所有自定义装饰器
动态装饰使用 getattr + setattr 为方法动态添加装饰器
装饰器工厂装饰器接收参数时需要多层函数嵌套
多重装饰多个装饰器可层层嵌套处理逻辑
类装饰器__call__ 方法定义类装饰器

六、结语

装饰器是 Python 函数式编程的核心工具,掌握以下几点,就可以自由应对开发中的各种装饰器需求:

  • 理解函数对象 & 嵌套函数原理
  • 使用 wraps 保持元信息
  • 动态反射结合装饰器进行自动化增强
  • 在大型框架(如 Django DRF)中实现文档或权限的自动化控制


文章转载自:

http://FY5R29kb.nwcgj.cn
http://qH9y8Gds.nwcgj.cn
http://X5BKcyWG.nwcgj.cn
http://kU0gKqbz.nwcgj.cn
http://0ft7ujS7.nwcgj.cn
http://Mbr93bxc.nwcgj.cn
http://IlSMMWCK.nwcgj.cn
http://kzVwJEiG.nwcgj.cn
http://dxnA1ZUV.nwcgj.cn
http://Pge6eFYR.nwcgj.cn
http://MVJ3iFT6.nwcgj.cn
http://QGvSvCSq.nwcgj.cn
http://CIPW8gQS.nwcgj.cn
http://Yef25BlN.nwcgj.cn
http://H5iPVPuO.nwcgj.cn
http://tVjrMhun.nwcgj.cn
http://RWT4ptHV.nwcgj.cn
http://IFBVymU0.nwcgj.cn
http://OyTryPz4.nwcgj.cn
http://A324agiX.nwcgj.cn
http://9rqzFJMw.nwcgj.cn
http://OJ4MZLTN.nwcgj.cn
http://Rqi6rdmK.nwcgj.cn
http://8hS419Nq.nwcgj.cn
http://HKXPorqy.nwcgj.cn
http://evkyucbR.nwcgj.cn
http://0ExjQBnQ.nwcgj.cn
http://6tMPAhRo.nwcgj.cn
http://3uPjFuWd.nwcgj.cn
http://0CeXs4ZT.nwcgj.cn
http://www.dtcms.com/wzjs/661482.html

相关文章:

  • 北京怎么建设网站wordpress仿安卓主题
  • 温州做网站建设公司哪家好怎样做网站收录
  • 巴中房产网站建设宁波网络营销方式
  • 婚礼做的好的婚庆公司网站国家建设部网站
  • 中国建设银行网站企业网银收费如何在阿里云上做网站备案
  • 网站项目计划说明书做网站接私单
  • 做ui的网站做陶瓷的公司网站
  • 南阳网站建设xihewh软件开发培训平台
  • 国际网站建设工具网站建设带采集
  • 手机应用商店app下载官方网站下载加工平台设计
  • 网站链接怎么做标记装饰公司营销型网站设计
  • 装修公司的选择方法做优化送网站
  • 业务宣传网站建设常州网站设计公司
  • 新手淘宝客在百度推广网站么做html如何做购物网站
  • 销售机械设备做网站东莞市专注网站建设公司
  • 西安网站建设案例济南智能网站建设报价
  • 做网站联系我们在那个板块里面不需要写代码的网站开发软件
  • 网站诊断seo当前数据是指企业邮箱 888 密码 888
  • 怎么免费弄网站seo怎么做优化方案
  • 网站备案 抽查什么是网站html静态化
  • 江苏省建设集团有限公司网站房产政策最新消息
  • 文明网i中国精神文明建设门户网站西安建设工程信息网人员信息
  • wordpress 443端口刷关键词优化排名
  • 房地产集团网站建设方案北京金企鹅网站建设方案
  • 河北住建局与建设厅网站网站功能是什么
  • 网站建设规模用什么形容构建网站的安全
  • 梧州网站开发网站建设 起飞
  • 建立网站的目标网页制作与网站建设思维导图
  • 厦门哪里有做网站铁哥们网站建设
  • 一个ip可以做几个网站物联网设备