在一行中解压并分配多返回函数的单个返回值(Python)



我正在尝试执行以下操作,但不起作用:

agreements = getEligibleAndActiveAgreements(username).eligibleAgreements

对于返回2个结果的函数。我不想先分配一个通用变量,比如result = ..,然后检查result.eligibleAgreements,我想从一个返回中在同一行快速分配给特定变量。

def getEligibleAndActiveAgreements(username):
...
return eligibleAgreements, activeAgreements

getEligibleAndActiveAgreements(用户名(出错。eligibleAgreements

AttributeError: 'tuple' object has no attribute 'eligibleAgreements' 

getEligibleAndActiveAgreements(用户名(['eigibleAgreements']错误

TypeError: tuple indices must be integers or slices, not str

尝试以下任一项:

agreements, _ = getEligibleAndActiveAgreements(username)
# OR
agreements = getEligibleAndActiveAgreements(username)[0]

函数返回一个包含这两个值的元组。为了独立访问这些值,您需要使用索引值(从0开始(,或者只解压到协议中并丢弃另一个。

返回变量的引用仅在函数内部局部已知,当您调用函数时,它不知道return x,y行的引用,它只是函数外部的元组。

所以你可以做:

eligibleA, activeA = getEligibleAndActiveAgreements(username)

或者只返回dict:

def getEligibleAndActiveAgreements(username):
...
return {"eligibleAgreements": eligibleAgreements, "activeAgreements": activeAgreements}
...
agreements = getEligibleAndActiveAgreements(username)
eligibleAgreements = agreements["eligibleAgreements"]

最新更新