You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化代码:仅当变量存在时将其作为函数参数传递?

优化方案:简化条件式函数参数传递

原代码存在重复的函数调用逻辑,维护成本较高,以下是两种更简洁的优化写法:

方案一:动态参数字典 + **解包(推荐)

这种方式严格遵循「变量存在则传参,否则使用函数默认值」的逻辑,同时避免重复代码:

# 初始化基础参数字典
icp_params = {
    "source": source,
    "target": target,
    "max_correspondence_distance": max_cor_dist
}

# 若transformation有效,添加为init参数(对应原代码的第四个位置参数)
if transformation:
    icp_params["init"] = transformation

# 统一调用ICP函数,自动处理参数是否传递
icp_result = o3d.pipelines.registration.registration_icp(**icp_params)
transformation = icp_result.transformation

优势:

  • 仅需维护一处函数调用,后续修改参数时无需重复调整
  • 明确控制参数是否传递,完全匹配原逻辑,避免因传递None导致的潜在问题
  • 代码结构清晰,可读性更强

方案二:条件表达式直接传参

如果确认transformation为假值(如None)时,函数接受该值作为默认行为的等效输入,可使用更紧凑的写法:

transformation = o3d.pipelines.registration.registration_icp(
    source,
    target,
    max_cor_dist,
    transformation if transformation else None
).transformation

注意:

需确认Open3D的registration_icp函数接受None作为init参数的输入,且效果与不传该参数一致(实际官方文档中init默认是单位矩阵,直接传None可能不符合预期,因此更推荐方案一)

内容的提问来源于stack exchange,提问作者mkr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 11:40:37