Распаковка списка переменной длины, возвращаемого функцией

Хорошо, яопределяя функцию, которая принимает переменное количество входов и зажимает каждый из них

def clamp(*args):
    return [ max(min(arg, 0.8), 0.2) for arg in args]

Мне нравится удобочитаемость этой функции:

a = 0.12
b = 0.45
c = 0.992

A,B,C = clamp(a,b,c)

print A,B,C

>> 0.2, 0.45, 0.8

Это использует Pythons автоматическая распаковка списков в кортежи. Проблема в том, что если я приведу только один аргумент, Python неt распаковать его из списка, и я получаю список вместо float, что раздражает.

print clamp(a)

>> [0.2]

Мое решение пока состоит в том, чтобы проверить длину списка и проиндексировать его, если есть только один элемент:

def clamp(*args):
    result = [ max(0.2, min(0.8,arg)) for arg in args]
    return result if len(result) > 1 else result[0]

a = 0.12
print clamp(a)

>> [0.2]

У меня вопрос, есть ли более идиоматический способ сделать это?

Ответы на вопрос(5)

Ваш ответ на вопрос