如何让函数返回 2 个单独的值? [复制]

Posted

技术标签:

【中文标题】如何让函数返回 2 个单独的值? [复制]【英文标题】:How to have a function return 2 sperate values? [duplicate] 【发布时间】:2021-12-25 04:58:57 【问题描述】:

我正在尝试编写一个函数来返回男性和女性的 BAC。我的作业的 BAC 公式是 BAC = (drinks / Weight * R),其中 R 是男性和女性的不同值。我如何让它返回两个性别的值?

这是我尝试使用但不起作用的代码:

if sex =='M':
    R = 3.8
    BAC = (drinks / Weight * R) 
    BAC = BAC - (0.01 * (Duration / 40))
    return BAC
if sex == 'F':
    R = 4.5
    BAC = (drinks / Weight * R) 
    BAC = BAC - (0.01 * (Duration / 40))
    return BAC

我在代码中有另一个定义性别的函数,但将它放入函数中似乎会使事情复杂化,所以我认为我需要完全删除变量性别,但我不确定从那里去哪里。

【问题讨论】:

你的代码是无效的python:未定义的变量和return在函数之外。 @Michael:它是有效的 Python,只是不完整,而不是 minimal reproducible example。 【参考方案1】:

使用元组作为返回值:

# we're inside a function def here
    RM = 3.8
    BACM = (drinks / Weight * RM) 
    BACM = BACM - (0.01 * (Duration / 40))
    
    RF = 4.5
    BACF = (drinks / Weight * RF) 
    BACF = BAFC - (0.01 * (Duration / 40))

    return BACM, BACF

【讨论】:

【参考方案2】:

在 python 中,返回 2 个值就像返回一个元组(基本上是一个列表)。这可能非常有用,尤其是在与解构列表混合时。 示例:

def get_bac():
    maleBAC = 50  # random number for now, replace with the math necessary
    femaleBAC = 75
    return maleBAC, femaleBAC


male, female = get_bac()
print(male)  # 50
print(female)  # 75

【讨论】:

可能会更清楚地说return maleBAC, femaleBAC【参考方案3】:

这听起来像xy problem。虽然您的问题的答案是您可以返回任何集合类型,例如 tupleSequenceMapping,甚至创建自己的类,但接受性别作为函数的参数更简单.

【讨论】:

以上是关于如何让函数返回 2 个单独的值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个递归函数返回正确的值? [复制]

同一个函数通过设计模式在javascript中返回多个对象、数组或函数的值? [复制]

R:如何让用户定义的函数返回多个输出? [复制]

返回引用到底什么意思????

如何让df.loc只返回数据帧的特定单元格中的值(数字)?

JavaScript如何让jQ ajax请求 success函数里返回的数据,变为外层函数的返回值?