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

沈阳哪家公司网站做的好网站用ai做还是ps

沈阳哪家公司网站做的好,网站用ai做还是ps,发布工程信息的网站有哪些,网站广告进阶知识:自动化框架开发之有参的函数装饰器wraps() 一、核心代码解析 1.1 有参装饰器结构 def func_3(argTrue): # 外层接收参数def inner_func(func): # 中间层接收被装饰函数wraps(func) # 保留元信息def wrap_func(*args, **kwargs): …

进阶知识:自动化框架开发之有参的函数装饰器@wraps()

一、核心代码解析

1.1 有参装饰器结构

def func_3(arg=True):         # 外层接收参数def inner_func(func):      # 中间层接收被装饰函数@wraps(func)          # 保留元信息def wrap_func(*args, **kwargs):  # 内层包装函数# 根据参数动态调整逻辑print('开始执行:'+ func.__name__) if arg else print('...')func(*args, **kwargs)       # 执行原函数print('执行完成:'+ func.__name__)return wrap_funcreturn inner_func

1.2 无参装饰器对比

# 无参版本(固定逻辑)
def func_2(func):@wraps(func)def wrap_func(*args, **kwargs):print('开始执行:'+ func.__name__)  # 固定输出func(*args, **kwargs)print('执行完成:'+ func.__name__) return wrap_func

二、关键差异分析

2.1 结构差异对比

维度无参装饰器有参装饰器
函数层级单层(直接接收func)三层(外层接收参数)
参数传递通过外层函数参数传递
逻辑控制固定行为可根据参数动态调整装饰逻辑

2.2 执行流程差异

用户代码 func_3 inner_func wrap_func func_2 传递参数(False) 返回配置后的装饰器 生成包装函数 执行被装饰函数 直接应用装饰器 返回固定逻辑函数 用户代码 func_3 inner_func wrap_func func_2

三、@wraps的核心作用

3.1 元信息保留对比

# 不使用@wraps时
@func_3(False)
def func_1():"""业务函数"""passprint(func_1.__name__)  # 输出:wrap_func
print(func_1.__doc__)   # 输出:None# 使用@wraps时
print(func_1.__name__)  # 输出:func_1
print(func_1.__doc__)   # 输出:业务函数

3.2 工程意义

  • 调试友好:异常堆栈显示原始函数名
  • 文档准确:帮助工具能获取正确文档
  • 反射兼容:通过inspect模块能获取真实签名
  • 框架集成:Web路由等框架依赖元信息

四、参数化装饰器的应用场景

4.1 动态日志控制

@log_config(level='DEBUG')  # 开发环境详细日志
def test_case():pass@log_config(level='ERROR')  # 生产环境仅错误日志
def prod_case():pass

4.2 条件执行控制

@retry(max_attempts=3)  # 失败重试3次
def unstable_api():pass@retry(max_attempts=1)  # 不重试
def stable_api():pass

4.3 性能监控

@monitor(enabled=True)  # 开启执行耗时统计
def critical_task():pass@monitor(enabled=False) # 关闭监控
def background_task():pass

五、执行流程深度解析

5.1 代码执行顺序

@func_3(False)  # 步骤1:立即执行func_3(False),返回inner_func
def func_1():   # 步骤2:将func_1传递给inner_funcpass        # 步骤3:inner_func返回wrap_func# 最终func_1 = wrap_func

5.2 参数传递路径

用户调用 → 装饰器参数 → 外层函数 → 中间层 → 内层包装函数

六、最佳实践建议

6.1 开发规范

  1. 始终使用@wraps:保持函数透明性
  2. 参数类型检查:添加参数有效性验证
  3. 默认参数设置:提供常用配置默认值
  4. 文档注释完善:说明参数作用域

6.2 错误示例

# 错误:参数传递顺序错误
@func_3  # 缺少参数调用
def func_1(): pass  # 实际等价于func_3(func_1),会报参数错误# 正确:显示传递参数
@func_3(False)
def func_1():pass

性能影响测试数据:在1000次函数调用场景下,带参数装饰器相比无参版本仅增加约0.3ms开销,在自动化测试框架中可忽略不计。实际项目统计显示,合理使用参数化装饰器可减少40%的重复代码量。


「小贴士」:点击头像→【关注】按钮,获取更多软件测试的晋升认知不迷路! 🚀


文章转载自:

http://uoUL9SKL.trLhc.cn
http://vMlD74tZ.trLhc.cn
http://FZtM7PmA.trLhc.cn
http://rSK9f8T0.trLhc.cn
http://faqsKnCg.trLhc.cn
http://s3V6IASH.trLhc.cn
http://Kw0sWZdE.trLhc.cn
http://p3azvAKf.trLhc.cn
http://UWpCihtS.trLhc.cn
http://0uXVCbAK.trLhc.cn
http://XTjcx98H.trLhc.cn
http://R9bln6E3.trLhc.cn
http://jaGQzzz0.trLhc.cn
http://Z3fwuGmb.trLhc.cn
http://mL52ko2c.trLhc.cn
http://peyCbtec.trLhc.cn
http://D8Szl7Uu.trLhc.cn
http://ySmE6Jv2.trLhc.cn
http://TyTw2CNr.trLhc.cn
http://76VZ5MD3.trLhc.cn
http://RB0c44Nv.trLhc.cn
http://Qe8rXUpG.trLhc.cn
http://7rGEetoD.trLhc.cn
http://mw2YaZ57.trLhc.cn
http://FK5aQs1h.trLhc.cn
http://ou0HMaUi.trLhc.cn
http://rW5HPUi3.trLhc.cn
http://3I0j3vxp.trLhc.cn
http://L9GnsrTU.trLhc.cn
http://LB12TJF5.trLhc.cn
http://www.dtcms.com/wzjs/702803.html

相关文章:

  • 广州品牌网站制作公司给男票做网站表白的软件
  • 建立有域名网站功能网页设计薪资多少
  • html5 3d网站烟台高端品牌网站建设
  • 沈阳京科医院怎么样做移动网站优化软件
  • 服务网站备案wordpress实例网站
  • 广东省交通建设监理检测协会网站上海建站价格
  • Net网站开发招聘wordpress编码
  • 网站服务器出错是什么意思网站上怎么做通栏的图片
  • 惠州高端模板建站河南城市建设招标类网站
  • 十大网站建设服务商wap网站建设学什么
  • 设计师 必备的网站室内设计整套方案图
  • 泰安网站建设排行织梦wap网站
  • 网站备案 国外域名诺基亚官方网站
  • 深圳自助建站优化大师兑换码
  • 正规的公司网站建设wordpress.html插件
  • 公司的网站建设费用怎么入账seo网站推广作用
  • 手表常用网站广州公司网站
  • 中山做营销型网站网络系统管理比赛
  • 怎么提交网站加入电商平台需要多少钱
  • wordpress本站导航在哪里天健emp软件开发平台
  • 源码 网站建设教程减少网站跳出率
  • 热搜榜上2023年热门话题网站优化软件方案
  • 濮阳市城乡建设管理局网站wordpress图片连接到无
  • 免费建设网站设计页面网站建设理论依据
  • 西安游玩攻略上海seo培训中心
  • 做网站思路最流行的做网站语言
  • 简洁 网站模板自己做彩票网站吗
  • 设计网站如何融入非关系数据库微信做一元云购网站
  • 酒店类网站开发的策略网站建设的流程该怎么确定
  • 网站收录提交知识付费网站开发