Conseguir que uma função Python retorne de forma limpa um escalar ou lista, dependendo do número de argumentos
Isenção de responsabilidade: Estou procurando uma solução Python 2.6, se houver.
Estou procurando uma função que retorna um único valor quando passou um único valor, ou que retorna uma sequência quando passou vários valores:
>>> a = foo(1)
2
>>> b, c = foo(2, 5)
>>> b
3
>>> c
6
Para ser claro, é um esforço para fazer com que algumas chamadas de função pareçam mais agradáveis do que:
a, = foo(1)
ou
a = foo(1)[0]
No momento, a solução deselegante é algo nesse sentido:
def foo(*args):
results = [a + 1 for a in args]
return results if len(results) > 1 else results[0]
Existe algum açúcar sintático (ou funções) que faria isso parecer mais limpo? algo como o seguinte?
def foo(*args):
return *[a + 1 for a in args]