84 votes

Arguments de méthode/fonction Python commençant par un astérisque et un double astérisque

Je ne suis pas en mesure de comprendre où ce type de fonctions est utilisé et comment ces arguments fonctionnent différemment des arguments normaux. Je les ai rencontrés à plusieurs reprises mais je n'ai jamais eu la chance de les comprendre correctement.

Ex :

def method(self, *links, **locks):
    #some foo
    #some bar
    return

Je sais que j'aurais pu chercher dans la documentation mais je n'ai aucune idée de ce qu'il faut chercher.

125voto

Rafe Kettler Points 29389

El *args y **keywordargs sont utilisées pour passer des listes d'arguments et des dictionnaires d'arguments, respectivement. Donc, si j'avais une fonction comme celle-ci :

def printlist(*args):
    for x in args:
        print x

Je pourrais l'appeler comme ça :

printlist(1, 2, 3, 4, 5) # or as many more arguments as I'd like

Pour cette

def printdict(**kwargs):
    print repr(kwargs)

printdict(john=10, jill=12, david=15)

*args se comporte comme une liste, et **keywordargs se comporte comme un dictionnaire, mais vous n'avez pas besoin de passer explicitement une liste ou un dict à la fonction.

Ver este pour d'autres exemples.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X