Comment passer des tuples et des dictionnaires comme arguments variables dans les fonctions Python

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Les fonctions Python offrent un moyen polyvalent de gérer les arguments variables, vous permettant de passer des tuples et des dictionnaires comme paramètres flexibles. Dans ce tutoriel, nous allons explorer comment tirer parti de cette fonctionnalité pour écrire un code plus dynamique et adaptable dans vos projets Python.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python/DataStructuresGroup -.-> python/tuples("Tuples") python/DataStructuresGroup -.-> python/dictionaries("Dictionaries") python/FunctionsGroup -.-> python/arguments_return("Arguments and Return Values") python/FunctionsGroup -.-> python/default_arguments("Default Arguments") python/FunctionsGroup -.-> python/keyword_arguments("Keyword Arguments") subgraph Lab Skills python/tuples -.-> lab-417975{{"Comment passer des tuples et des dictionnaires comme arguments variables dans les fonctions Python"}} python/dictionaries -.-> lab-417975{{"Comment passer des tuples et des dictionnaires comme arguments variables dans les fonctions Python"}} python/arguments_return -.-> lab-417975{{"Comment passer des tuples et des dictionnaires comme arguments variables dans les fonctions Python"}} python/default_arguments -.-> lab-417975{{"Comment passer des tuples et des dictionnaires comme arguments variables dans les fonctions Python"}} python/keyword_arguments -.-> lab-417975{{"Comment passer des tuples et des dictionnaires comme arguments variables dans les fonctions Python"}} end

Comprendre les paramètres des fonctions Python

Les fonctions Python peuvent accepter différents types d'arguments, notamment les arguments positionnels, les arguments nommés (keyword arguments) et les arguments variables. Comprendre comment utiliser ces différents types d'arguments est essentiel pour écrire un code Python flexible et réutilisable.

Arguments positionnels

Les arguments positionnels sont le type d'arguments de fonction le plus basique. Ils sont passés à la fonction dans l'ordre dans lequel ils sont définis, et la fonction s'attend à ce que les arguments soient fournis dans le même ordre.

def greet(name, greeting):
    print(f"{greeting}, {name}!")

greet("Alice", "Hello")  ## Output: Hello, Alice!
greet("Bob", "Hi")       ## Output: Hi, Bob!

Arguments nommés (keyword arguments)

Les arguments nommés sont passés à la fonction en utilisant le nom de l'argument et un signe égal. Cela permet de fournir les arguments dans n'importe quel ordre, tant que les noms des arguments correspondent aux noms des paramètres de la fonction.

def greet(name, greeting):
    print(f"{greeting}, {name}!")

greet(name="Alice", greeting="Hello")  ## Output: Hello, Alice!
greet(greeting="Hi", name="Bob")       ## Output: Hi, Bob!

Arguments variables

En plus des arguments positionnels et des arguments nommés, Python prend également en charge les arguments variables, qui permettent à une fonction d'accepter un nombre arbitraire d'arguments. Ces arguments sont indiqués par le préfixe * (pour les arguments positionnels) et ** (pour les arguments nommés).

def print_numbers(*args):
    for arg in args:
        print(arg)

print_numbers(1, 2, 3)  ## Output: 1 2 3
print_numbers(4, 5)    ## Output: 4 5

Dans la section suivante, nous allons explorer comment utiliser les arguments variables pour passer des tuples et des dictionnaires aux fonctions Python.

Passer des tuples comme arguments flexibles

Les tuples sont des séquences immuables de valeurs, et ils peuvent être utilisés comme arguments flexibles dans les fonctions Python. En utilisant le préfixe *, vous pouvez passer un tuple comme une séquence d'arguments positionnels à une fonction.

Déballez (unpacking) des tuples

Considérez l'exemple suivant :

def greet(name, greeting):
    print(f"{greeting}, {name}!")

person = ("Alice", "Hello")
greet(*person)  ## Output: Hello, Alice!

Dans ce cas, le tuple person est « déballé » dans les paramètres name et greeting de la fonction greet().

Passer des tuples de longueurs variables

Vous pouvez également utiliser la syntaxe *args pour accepter un nombre variable d'arguments, ce qui peut être utile lorsque vous travaillez avec des tuples de longueurs variables.

def print_numbers(*args):
    for arg in args:
        print(arg)

print_numbers(1, 2, 3)  ## Output: 1 2 3
print_numbers(4, 5, 6, 7)  ## Output: 4 5 6 7

Dans cet exemple, la fonction print_numbers() peut accepter n'importe quel nombre d'arguments, et tous sont collectés dans le tuple args.

Combiner des arguments positionnels et des arguments variables

Vous pouvez également combiner des arguments positionnels 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):
    for name in names:
        print(f"{greeting}, {name}!")

greet("Hello", "Alice", "Bob", "Charlie")
## Output:
## Hello, Alice!
## Hello, Bob!
## Hello, Charlie!

Dans ce cas, le paramètre greeting est un argument positionnel, et le paramètre *names collecte tous les arguments restants dans un tuple.

En comprenant comment passer des tuples comme arguments flexibles, vous pouvez écrire des fonctions Python plus polyvalentes et réutilisables.

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.

Résumé

À la fin de ce tutoriel, vous aurez une bonne compréhension de la manière de passer des tuples et des dictionnaires comme arguments variables dans les fonctions Python. Cette connaissance vous permettra de créer un code plus flexible et dynamique, vous permettant d'écrire des applications Python plus efficaces et faciles à maintenir.