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

Python 多返回值函数如何无需临时变量一行提取单个返回值赋值

错误原因

Python 函数返回多个值时,会默认将多个值打包为*元组(tuple)*类型返回:

  • 元组是有序序列结构,不存在自定义属性,因此无法通过.属性名的方式取值,会触发AttributeError
  • 元组仅支持整数下标或切片索引,不支持字符串作为索引,因此用['eligibleAgreements']取值会触发TypeError
正确实现方案

方案1:序列解包(最推荐,可读性最高)

直接在一行内完成多返回值接收,不需要的第二个返回值用Python通用占位符_接收即可:

eligibleAgreements, _ = getEligibleAndActiveAgreements(username)

方案2:直接按下标取值

由于eligibleAgreements是函数返回的第一个值,对应元组的下标为0,直接按索引取值即可:

agreements = getEligibleAndActiveAgreements(username)[0]
可选扩展(支持属性名取值)

如果你后续希望可以直接通过.eligibleAgreements的方式取值,无需记忆下标,可以修改原函数的返回类型,比如使用namedtuple封装返回结果:

from collections import namedtuple
# 定义返回结果结构
AgreementResult = namedtuple('AgreementResult', ['eligibleAgreements', 'activeAgreements'])

def getEligibleAndActiveAgreements(username):
    # 原有逻辑不变
    eligibleAgreements = ...
    activeAgreements = ...
    # 改为返回封装后的namedtuple对象
    return AgreementResult(eligibleAgreements, activeAgreements)

修改后你原本的点调用写法就可以正常运行了。


内容的提问来源于stack exchange,提问作者gene b.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 07:54:03