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

Python函数返回可变数量结果时的优雅赋值方法

Pythonic简化写法方案

这里直接给出3种不同场景下的最优实现:

  • 方案1:最贴合预期的一行赋值写法(Python 3.0+支持)
    利用序列拼接+切片自动补默认值,完全实现你想要的直接拆包效果,不需要额外初始化变量:
bbox, segm = (*test_model(), None)[:2]
# 后续逻辑完全不变
if segm is not None:
    plot(segm)

原理:*test_model()会把返回的列表解包为独立元素,末尾补一个None后取前2位,当返回列表只有1个元素时,第二位就是补的None,和你原有逻辑完全一致。

  • 方案2:扩展拆包写法(适配返回值可能后续扩展的场景)
    如果未来这个函数可能返回更多元素,用Python的星号扩展拆包兼容性更好:
bbox, *segm_rest = test_model()
segm = segm_rest[0] if segm_rest else None

if segm is not None:
    plot(segm)

原理:*segm_rest会接收除第一个元素外的所有剩余返回值,空列表对应没有第二个返回值的场景。

  • 方案3:兼容Python 2的简化写法
    如果需要兼容Python 2版本,可以直接简化赋值逻辑,省去提前初始化的步骤:
results = test_model()
bbox, segm = results[0], results[1] if len(results) > 1 else None

if segm is not None:
    plot(segm)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:06:05