我正在尝试执行以下操作,但不起作用:
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"]