Looking for python Keywords? Try Ask4Keywords

Python Language* args et ** kwargs


Remarques

Il y a quelques choses à noter:

  1. Les noms args et kwargs sont utilisés par convention, ils ne font pas partie de la spécification du langage. Ainsi, ceux-ci sont équivalents:

     def func(*args, **kwargs):
         print(args)
         print(kwargs)
    

     def func(*a, **b):
         print(a)
         print(b)
    
  2. Vous ne pouvez pas avoir plus d'un args ou plus d'un paramètre kwargs (toutefois, ils ne sont pas obligatoires)

     def func(*args1, *args2):
     #   File "<stdin>", line 1
     #     def test(*args1, *args2):
     #                      ^
     # SyntaxError: invalid syntax
    

     def test(**kwargs1, **kwargs2):
     #   File "<stdin>", line 1
     #     def test(**kwargs1, **kwargs2):
     #                       ^
     # SyntaxError: invalid syntax
    
  3. Si un argument de position suit *args , ce sont des arguments de mots-clés uniquement pouvant être transmis uniquement par nom. Une seule étoile peut être utilisée à la place de *args pour forcer les valeurs à être des arguments de mot-clé sans fournir de liste de paramètres variadiques. Les listes de paramètres par mot clé uniquement sont uniquement disponibles dans Python 3.

     def func(a, b, *args, x, y):
         print(a, b, args, x, y)
    
     func(1, 2, 3, 4, x=5, y=6)
     #>>> 1, 2, (3, 4), 5, 6
    

     def func(a, b, *, x, y):
         print(a, b, x, y)
    
     func(1, 2, x=5, y=6)
     #>>> 1, 2, 5, 6
    
  4. **kwargs doit venir en dernier dans la liste des paramètres.

     def test(**kwargs, *args):
     #   File "<stdin>", line 1
     #     def test(**kwargs, *args):
     #                      ^
     # SyntaxError: invalid syntax
    

* args et ** kwargs Exemples Liés