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

时间:2016-01-07 14:25:48

标签: python

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

2 个答案:

答案 0 :(得分:0)

一般来说,你无法从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"

更糟糕的是,即使您知道输入,也无法在不解决暂停问题的情况下判断结果。

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

答案 1 :(得分:0)

文档应该告诉你,但你可以在运行时测试你是否真的需要:

 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,标量或元组/列表,这使得使用结果不必要地复杂!