从函数返回多个值的最佳方法是什么?
我有一个函数,需要对一个字符串进行一些操作。这个函数需要返回一个布尔值,告诉我操作是否成功,同时还要返回修改后的字符串。
在C#中,我会使用一个“out参数”来传递这个字符串,但在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