从函数返回多个值的最佳方法是什么?

78 投票
6 回答
81568 浏览
提问于 2025-04-11 09:14

我有一个函数,需要对一个字符串进行一些操作。这个函数需要返回一个布尔值,告诉我操作是否成功,同时还要返回修改后的字符串。

在C#中,我会使用一个“out参数”来传递这个字符串,但在Python中没有类似的东西。我对Python还很陌生,唯一能想到的就是返回一个包含布尔值和修改后字符串的元组。

相关问题:一个函数返回多个值在Python中算不算好习惯?

6 个回答

17

返回一个元组。

def f(x):
    # do stuff
    return (True, modified_string)

success, modified_string = f(something)
31

为什么不在操作失败时抛出一个异常呢?我个人觉得,如果一个函数需要返回多个值,那就应该考虑一下这样做是否合适,或者干脆使用一个对象来处理。

更直接地说,如果你抛出一个异常,那就相当于强迫调用这个函数的人去处理这个问题。如果你只是返回一个表示失败的值,有可能有人会忘记检查这个值,结果就可能会导致一些难以调试的错误。

136

在编程中,有时候我们需要处理一些数据,而这些数据可能会有很多不同的格式。为了让程序能够理解这些数据,我们需要将它们转换成一种统一的格式,这样程序才能顺利地进行处理。

比如说,如果你有一个包含日期的字符串,可能它的格式是“2023年10月1日”,而你希望把它转换成“2023-10-01”这样的格式。这样做的好处是,统一的格式更容易进行比较和计算。

在这个过程中,我们可能会用到一些工具或库,这些工具可以帮助我们快速地完成格式转换。使用这些工具,就像是用一个万能的转换器,把不同的东西变成我们需要的样子。

总之,数据格式的统一是编程中一个很重要的步骤,它能让我们的程序更加高效和准确。

def f(in_str):
    out_str = in_str.upper()
    return True, out_str # Creates tuple automatically

succeeded, b = f("a") # Automatic tuple unpacking

撰写回答