Получение функции Python для чистого возврата скаляра или списка, в зависимости от количества аргументов

Отказ от ответственности: я ищу решение Python 2.6, если оно есть.

Я ищу функцию, которая возвращает одно значение при передаче одного значения или последовательность при передаче нескольких значений:

>>> a = foo(1)
2
>>> b, c = foo(2, 5)
>>> b
3
>>> c
6

Для ясности, это делается для того, чтобы некоторые вызовы функций выглядели лучше чем:

a, = foo(1)

или

a = foo(1)[0]

Прямо сейчас неизящное решение выглядит примерно так:

def foo(*args):
    results = [a + 1 for a in args]
    return results if len(results) > 1 else results[0]

Есть ли какой-нибудь синтаксический сахар (или функции), который сделает это чище? что-нибудь вроде следующего?

def foo(*args):
    return *[a + 1 for a in args]
5
задан Nevir 27 October 2010 в 00:33
поделиться