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

python variables return

73264 观看

5回复

8829 作者的声誉

我有一个函数,我需要对字符串做一些事情。我需要函数返回一个布尔值,指示操作是否成功,我还需要返回修改后的字符串。

在C#中,我会为字符串使用out参数,但Python中没有等效参数。我仍然是Python的新手,我唯一能想到的是返回一个带有布尔值和修改后的字符串的元组。

相关问题:函数返回多个值是pythonic吗?

作者: sectrean 的来源 发布者: 2008 年 9 月 1 日

回应 5


7

12077 作者的声誉

返回元组是在Python中执行此操作的常用方法。

作者: Chris Upchurch 发布者: 2008 年 9 月 1 日

16

6100 作者的声誉

返回一个元组。

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

success, modified_string = f(something)
作者: rmmh 发布者: 2008 年 9 月 1 日

126

162049 作者的声誉

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

succeeded, b = f("a") # Automatic tuple unpacking
作者: John Millikin 发布者: 2008 年 9 月 1 日

29

111080 作者的声誉

如果操作不成功,为什么不抛出异常?就个人而言,我倾向于认为如果你需要从一个函数返回多个值,你应该重新考虑你是以正确的方式做事还是使用一个对象。

但更直接的是,如果你抛出异常,你就迫使他们处理这个问题。如果您尝试返回一个指示失败的值,那么很可能有人无法检查该值并最终导致一些可能难以调试的错误。

作者: Jason Baker 发布者: 2008 年 9 月 1 日

3

349 作者的声誉

抛出失败的异常是一种很好的方法,如果你返回了很多不同的值,你可以返回一个元组。对于您引用的具体情况,我经常采用中间方法:成功返回修改后的字符串,失败时返回None。我已经足够了一个未经构造的C程序员,想要在失败时返回一个指向char的NULL指针。

如果我正在编写一个例程来用作更大的库的一部分并被其他开发人员使用,那么我会在失败时抛出异常。当我吃自己的狗食时,我可能会返回不同的类型并在返回时进行测试。

作者: tuxedo 发布者: 2008 年 9 月 2 日
32x32