Je passe par python et je me demandais quels sont les avantages d'utiliser les * args comme paramètre plutôt que de passer une liste en paramètre, en plus esthétique?Avantages de l'utilisation de * args en python au lieu de passer une liste en paramètre
Répondre
Généralement, il est utilisé soit pour transmettre une liste d'arguments à une fonction qui prendrait normalement un nombre fixe d'arguments, soit dans des définitions de fonctions pour permettre le passage d'un nombre variable d'arguments dans le style des arguments normaux. Par exemple, la fonction print()
utilise varargs pour que vous puissiez faire des choses comme print(a,b,c)
. Un exemple d'une question SO récente: vous pouvez l'utiliser pour passer une liste de range()
listes de résultats à itertools.product()
sans avoir à connaître la longueur de la liste de listes.
Bien sûr, vous pouvez écrire toutes les fonctions bibliothèque pour ressembler à ceci:
def libfunc1(arglist):
arg1 = arglist[1]
arg2 = arglist[2]
...
... mais défaites au point d'avoir nommé des variables d'argument de position, il est fondamentalement exactement ce que *args
fait pour vous, et résultats accolades/parens redondants, puisque vous auriez à appeler une fonction comme ceci:
libfunc1([arg1val,arg2val,...])
... qui ressemble beaucoup à ...
libfunc1(arg1val,arg2val,...)
... sauf avec des caractères inutiles, par opposition à *args
.
C'est pour flexibilité.
Il vous permet de transmettre les arguments, sans savoir de combien vous avez besoin. Un exemple typique:
def f(some, args, here): # <- this function might accept a varying nb of args
...
def run_f(args, *f_args):
do_something(args)
# run f with whatever arguments were given:
f(*f_args)
Assurez-vous de vérifier la version de mot-clé **
.
Merci :), qui a répondu à ma question –
- 1. Python convertir args en kwargs
- 2. Passer une fonction en paramètre dans jQuery?
- 3. Comment passer d'une liste de mots à une liste de lettres distinctes en Python
- 4. Avantages de l'utilisation de tableaux au lieu de std :: vector?
- 5. Avantages de l'utilisation de SqlCommand.ExecuteNonQuery au lieu de ...
- 6. Passer une classe en paramètre?
- 7. Passer une méthode en paramètre
- 8. python, convertir un dictionnaire en une liste triée par valeur au lieu de la clé
- 9. Castle Windsor: Comment passer un paramètre de liste au conteneur?
- 10. Initialisation du args mot-clé en Python
- 11. Comment passer une méthode en tant que paramètre dans Python
- 12. en utilisant JFlex au lieu de Regex
- 13. Python coller en utilisant oeuf global au lieu de local
- 14. notation scientifique Python en utilisant D au lieu de E
- 15. liste de vérification en python
- 16. Comment passer args à la méthode dans java, comme f (* args) dans python?
- 17. ActionLink avec paramètre après? au lieu de/
- 18. Liste de répertoires au lieu de l'application
- 19. Subsonic: Comparaison de deux colonnes au lieu d'un paramètre d'entrée
- 20. Passer une requête en tant que paramètre
- 21. Passer une méthode aléatoire en paramètre?
- 22. Passer une liste tout en conservant l'original
- 23. somme une liste de numéros en Python
- 24. Déballez une liste en Python?
- 25. Passer une fonction (avec paramètres) en paramètre?
- 26. Python: Passer un nom de classe en tant que paramètre à une fonction?
- 27. En utilisant HttpModule au lieu de Global.asax
- 28. Passer de la liste des listes de chaînes à la liste des listes d'ints en python
- 29. Création de liste en python
- 30. Liste au format CSV en Python
Merci, cependant je demandais quels sont les avantages de ce passage sur une liste en tant que paramètre. évidemment les concepteurs de python ont préféré cela pour une raison quelconque, car outre l'esthétique, cette méthode est apparemment totalement redondante. –
Ajout d'un exemple. L'un des gros avantages est qu'il vous permet de passer facilement des choses de longueur variable aux fonctions de la bibliothèque standard, sans que les fonctions de la bibliothèque aient à être réécrites. – Amber
merci beaucoup, cela répond à ma question :) –