2016-01-07 4 views
-3

Мне нужно сделать некоторые интроспекции в Numpy/Scipy. Хотя относительно легко найти информацию о том, как получить help docstring и аргументы, я не смог получить ничего о том, как получить информацию о возвращаемых значениях. В частности, я просто хотел бы найти, какие функции возвращают несколько значений или эквивалентно (более или менее) кортежей. Любой способ сделать это?Как проверить возврат нескольких значений в Python?

+1

Насколько я знаю, от Python нет никакого способа. Не могли бы вы просто проверить документацию? – birdoftheday

+0

Не уверен, что вам нужно ... Май http://stackoverflow.com/questions/9752958/how-can-i-return-two-values-from-a-function-in-python help? – BAE

+0

также http://stackoverflow.com/questions/919680/can-a-variable-number-of-arguments-be-passed-to-a-function – BAE

ответ

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" 

Что еще хуже, даже если вы знаете входы, вы не можете сказать результат без решения проблемы с остановкой.

Ваш единственный шанс прочитать документацию.

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, скаляр или список кортежей /, что делает использование результата излишне сложным!

Смежные вопросы