Maison >développement back-end >Tutoriel Python >Comment `*args` et `kwargs` gèrent-ils les arguments variables dans les fonctions Python ?

Comment `*args` et `kwargs` gèrent-ils les arguments variables dans les fonctions Python ?

DDD
DDDoriginal
2024-12-23 02:21:13459parcourir

How Do `*args` and `kwargs` Handle Variable Arguments in Python Functions?

Comprendre la signification de (étoile/astérisque) et * (double étoile/astérisque) dans les paramètres

Dans les définitions de fonctions Python, le et * fournissent des idiomes puissants pour gérer des nombres arbitraires de arguments.

Arguments de position : *args

    Le paramètre *args permet à une fonction d'accepter un nombre variable d'arguments de position.
  • Ces arguments sont rassemblés dans un tuple accessible dans le fonction.

Exemple :

def foo(x, y, *args):
    pass

foo(1, 2, 3)
# args = (3,)

Arguments de mots clés : kwargs**

    Le **Le paramètre kwargs permet à une fonction d'accepter n'importe quel nombre d'arguments de mots-clés.
  • Ces arguments sont collectés dans un dictionnaire où les clés sont les noms des arguments et les valeurs sont les valeurs des arguments.

Exemple :

def bar(x, y, **kwargs):
    pass

bar(x=1, y=2, name='John', age=27)
# kwargs = {'name': 'John', 'age': 27}

Mixage fixe et arguments variables

    Les deux
  • args et *kwargs peuvent être combinés avec des arguments fixes normaux pour offrir une flexibilité dans les définitions de fonctions.

Exemple :

def foo(kind, *args, bar=None, **kwargs):
    print(kind, args, bar, kwargs)

foo(123, 'a', 'b', apple='red')
# 123 ('a', 'b') None {'apple': 'red'}

Utilisations supplémentaires

    • peut être utilisé pour déballer listes d'arguments lors de l'appel d'une fonction.
  • Dans Python 3,
  • et * peuvent être utilisés sur le côté gauche d'une affectation pour décompresser les itérables en variables.
  • Python 3.6 introduit une nouvelle syntaxe qui restreint les arguments de position après *.

Remarque :

    Python utilise des dictionnaires pour représenter les arguments de mots-clés, qui maintiennent l'ordre d'insertion dans Python 3.6.
  • Les dictionnaires kwargs maintiennent l'ordre d'insertion dans Python 3.7 et supérieur, même pour les non-CPython implémentations.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn