Existe-t-il un moyen d'étendre un tuple Python en fonction - en tant que paramètres réels?
Par exemple, voici expand()
la magie:
some_tuple = (1, "foo", "bar")
def myfun(number, str1, str2):
return (number * 2, str1 + str2, str2 + str1)
myfun(expand(some_tuple)) # (2, "foobar", "barfoo")
Je sais que l'on pourrait définir myfun
comme myfun((a, b, c))
, mais bien sûr, il peut y avoir un code hérité. Merci
python
tuples
parameter-passing
AkiRoss
la source
la source
Notez que vous pouvez également développer une partie de la liste des arguments:
la source
some_func(*tuple_of_stuff, another_argument)
def func(a,b,c,d): print(a,b,c,d)
avecargs = ('fee', 'fi', 'fo'); func(*args, 'fum')
Jetez un œil au tutoriel Python section 4.7.3 et 4.7.4 du . Il parle de passer des tuples comme arguments.
J'envisagerais également d'utiliser des paramètres nommés (et de passer un dictionnaire) au lieu d'utiliser un tuple et de passer une séquence. Je trouve que l'utilisation d'arguments positionnels est une mauvaise pratique lorsque les positions ne sont pas intuitives ou qu'il existe plusieurs paramètres.
la source
Il s'agit de la méthode de programmation fonctionnelle. Il soulève la fonctionnalité d'extension de tuple du sucre de syntaxe:
apply_tuple = lambda f, t: f(*t)
Exemple d'utilisation:
curry redefiniton of
apply_tuple
enregistre beaucoup d'partial
appels à long terme.la source
lambda f, t: f(*t)
n'utilise pas de modules tiers et je suis un débutant en Python et cela m'est utile. Il s'agit d'une pure approche fonctionnelle. Si vous n'utilisez pas ce style, cette réponse n'est pas pour vous.starmap
docs.python.org/3.7/library/itertools.html#itertools.starmap