如何检查Python中返回的多个值?

如何检查Python中返回的多个值?,python,Python,我需要在Numpy/Scipy中进行一些反思。虽然找到有关如何获取帮助文档字符串和参数的信息相对容易,但我无法获得有关如何获取返回值信息的任何信息。更具体地说,我只想找出哪些函数返回多个值,或者等价地(或多或少地)返回元组。有什么方法可以做到这一点吗?一般来说,您无法从Python中找到这一点。答案不是一个常数 def complicated(i): if i == 1: return 0 elif i == 2: return (0,1)

我需要在Numpy/Scipy中进行一些反思。虽然找到有关如何获取帮助文档字符串和参数的信息相对容易,但我无法获得有关如何获取返回值信息的任何信息。更具体地说,我只想找出哪些函数返回多个值,或者等价地(或多或少地)返回元组。有什么方法可以做到这一点吗?

一般来说,您无法从Python中找到这一点。答案不是一个常数

def complicated(i):
    if i == 1:
        return 0
    elif i == 2:
        return (0,1)
    elif i == 3:
        return [0,1,2]
    elif program_halts(i):
        return {}
    else
        return "Nope"
更糟糕的是,即使您知道输入,如果不解决停止问题,您也无法说出结果


您唯一的机会就是阅读文档。

文档应该告诉您,但是如果您确实需要,您可以在运行时进行测试:

 r = something()

 if type(r)==tuple or type(r)==list:
    for rn in r:
       # do something with each returned value
       # (which might include further checking if it's a list or a tuple)

 elif type(r)==int or type(r)==float:
    # it's a scalar numeric value

 else:
     raise ValueError( "Can't handle {}".format(r) )

传递返回列表或元组的函数时,应返回长度为0或1的列表或元组,以指示没有任何值或只有一个值可返回。我见过一些代码,其中包含
None
、标量或元组/列表,这使得使用结果变得不必要的复杂

据我所知,Python是没有出路的。你能检查一下文件吗?不知道你需要什么。。。可能会有帮助吗?同样在Python这样的动态语言中,若不运行代码,就无法推断返回值的类型。你唯一可以试着祈祷的就是帮助(函数名)。否则,您必须运行该功能并查看它返回的内容