Maison > Article > développement back-end > Explication comparative de l'utilisation de *args et **kwargs en Python
*args représente plusieurs paramètres sans nom, qui sont un tuple ; **kwargs représente des paramètres de mots-clés, qui sont un dict.
def fun(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '###' if __name__ == '__main__': foo(1,2,3,4) foo(a=1,b=2,c=3) foo(1,2,3,4, a=1,b=2,c=3) foo('a', 1, None, a=1, b='2', c=3)
Les résultats de sortie sont les suivants :
args = (1, 2, 3, 4) kwargs = {} ### args = () kwargs = {'a': 1, 'c': 3, 'b': 2} ### args = (1, 2, 3, 4) kwargs = {'a': 1, 'c': 3, 'b': 2} ### args = ('a', 1, None) kwargs = {'a': 1, 'c': 3, 'b': '2'} ###
Comme vous pouvez le voir, ces deux paramètres sont variables en python.
Remarque : lorsque vous utilisez *args et **kwargs en même temps, le paramètre *args doit être répertorié avant **kwargs, comme foo(a=1, b='2', c =3, a', 1, None, ) affichera une erreur de syntaxe "SyntaxError : argument non-keyword after password arg".
def fun2(param1, *args, **kwargs): print 'param1 = ', param1 print 'args = ', args print 'kwargs = ', kwargs print '###' fun2(1, 2, 3, 4, a=1,b=2,c=3)
Résultat de sortie :
param1 = 1 args = (2,3,4) kwargs = {'a': 1, 'c': 3, 'b': 2} ###
1 est affecté à param1, les 2, 3 et 4 restants sont affectés à *args et les autres sont affectés à * *kwargs
Il y a aussi un très bel usage, qui est de créer un dictionnaire :
def kw_dict(**kwargs): return kwargs print kw_dict(a=1,b=2,c=3)
Résultat :
{'a':1, 'b':2, 'c':3}
En fait, il y a un classe dict en Python, utilisez dict(a=1,b=2,c=3) pour créer un dictionnaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!