繁体   English   中英

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

[英]What's the best way to return multiple values from a function?

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

在 C# 中,我会为字符串使用 out 参数,但在 Python 中没有等价物。 我对 Python 还是很陌生,我唯一能想到的就是返回一个带有布尔值和修改过的字符串的元组。

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

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

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

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

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

返回一个元组。

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

success, modified_string = f(something)

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

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

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

您可以将 return 语句与多个表达式一起使用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM