Avertissement: Je suis à la recherche d'une solution Python 2.6, s'il y en a une.Obtenir une fonction Python pour retourner proprement un scalaire ou une liste, en fonction du nombre d'arguments
Je suis à la recherche d'une fonction qui retourne une valeur unique lorsqu'il est passé une seule valeur, ou qui retourne une séquence lorsqu'il est passé plusieurs valeurs:
>>> a = foo(1)
2
>>> b, c = foo(2, 5)
>>> b
3
>>> c
6
Pour être clair, cela est dans le but de faire certains appels de fonctions semblent simplement plus agréable que:
a, = foo(1)
ou
a = foo(1)[0]
En ce moment, la solution inélégante est quelque chose le long de ces lignes:
def foo(*args):
results = [a + 1 for a in args]
return results if len(results) > 1 else results[0]
Y at-il du sucre syntaxique (ou fonctions) qui en ferait sentir plus propre? quelque chose comme le suivant?
def foo(*args):
return *[a + 1 for a in args]
Pourquoi? Il semble que vous voulez juste des listes de compréhension. – JoshD
il semble que quelque chose ne va pas avec votre design parce que vous voulez une fonction pour retourner une liste ou un int en fonction du nombre d'arguments, pff !! pourquoi ne pas rendre votre fonction toujours retourner une liste et utiliser cette notation pour votre premier exemple: a, = foo (1) – mouad
C'est surtout une chose syntaxique de sucre et de lisibilité dans mon esprit.a = foo (1) est beaucoup plus clair (surtout quand les entrées et les sorties ont des arguments et des noms de variables plus complexes) – Nevir