Passer des dictionnaires comme arguments flexibles
En plus de passer des tuples comme arguments flexibles, vous pouvez également passer des dictionnaires comme arguments flexibles aux fonctions Python. Cela se fait en utilisant le préfixe **
, qui collecte les arguments nommés (keyword arguments) dans un dictionnaire.
Déballez (unpacking) des dictionnaires
Considérez l'exemple suivant :
def greet(name, greeting):
print(f"{greeting}, {name}!")
person = {"name": "Alice", "greeting": "Hello"}
greet(**person) ## Output: Hello, Alice!
Dans ce cas, le dictionnaire person
est « déballé » dans les paramètres name
et greeting
de la fonction greet()
.
Passer des dictionnaires avec des clés variables
Vous pouvez également utiliser la syntaxe **kwargs
pour accepter un nombre variable d'arguments nommés, ce qui peut être utile lorsque vous travaillez avec des dictionnaires ayant des clés variables.
def print_person_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_person_info(name="Alice", age=30, city="New York")
## Output:
## name: Alice
## age: 30
## city: New York
Dans cet exemple, la fonction print_person_info()
peut accepter n'importe quel nombre d'arguments nommés, et tous sont collectés dans le dictionnaire kwargs
.
Combiner des arguments positionnels, des arguments nommés et des arguments variables
Vous pouvez également combiner des arguments positionnels, des arguments nommés et des arguments variables dans une seule fonction. Les arguments variables doivent être définis en dernier dans la liste des paramètres de la fonction.
def greet(greeting, *names, **info):
for name in names:
print(f"{greeting}, {name}!")
for key, value in info.items():
print(f"{key}: {value}")
greet("Hello", "Alice", "Bob", name="Charlie", age=30)
## Output:
## Hello, Alice!
## Hello, Bob!
## name: Charlie
## age: 30
Dans ce cas, le paramètre greeting
est un argument positionnel, le paramètre *names
collecte tous les arguments positionnels restants dans un tuple, et le paramètre **info
collecte tous les arguments nommés dans un dictionnaire.
En comprenant comment passer des dictionnaires comme arguments flexibles, vous pouvez écrire des fonctions Python plus puissantes et adaptables.