English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base Python

Contrôle des flux Python

Fonctions en Python

Types de données en Python

Opérations de fichiers Python

Objets et classes Python

Dates et heures Python

Connaissances avancées Python

Manuel de référence Python

Paramètres de fonction en Python

Paramètres

DansFonction définie par l'utilisateurDans cet article, nous avons appris à définir et appeler des fonctions. Si vous ne comprenez pas la manière d'appeler une fonction, cela peut entraîner des erreurs imprévisibles. Voici un exemple.

def greet(name, msg):
    """Ceci est une fonction de salutation"""
    Les paramètres name et msg
    print("Hello", name + ', '' + msg)
greet("Monica", "Good morning!")

Output results

Hello Monica, Good morning!

La fonction greet() a deux paramètres.

Comme nous avons appelé cette fonction avec deux paramètres, elle s'exécute normalement et n'induit aucune erreur.

Si l'appel de la fonction utilise un nombre différent de paramètres, l'interpréteur affichera un message d'erreur. Voici un appel de cette fonction, qui montre les messages d'erreur générés après l'appel avec un seul paramètre et sans paramètre.

>>> greet("Monica")    # Un seul paramètre est passé
TypeError: greet() manque 1 argument positionnel obligatoire : 'msg'
>>> greet()    # Aucun paramètre n'est passé
TypeError: greet() manque 2 arguments positionnels obligatoires : 'name' et 'msg'

Paramètres de fonction variables

Jusqu'à présent, la fonction a un nombre fixe de paramètres. Dans Python, il existe d'autres méthodes pour définir des fonctions qui peuvent utiliser un nombre variable de paramètres.

Nous allons présenter trois formes différentes de ce type.

Paramètres par défaut Python

Dans Python, les paramètres de la fonction peuvent avoir une valeur par défaut.

Nous pouvons utiliser l'opérateur d'affectation (=) pour fournir une valeur par défaut aux paramètres. Voici un exemple.

def greet(name, msg="bon matin!"):
    """
    Cette fonction salue la personne qui fournit le message.
    si aucune message n'est fourni,
    alors il est par défaut "bon matin!"
    """
    print("Bonjour", name + ', '' + msg)
greet("Zhang San")
greet("Li Si", "comment ça va?")

Output results

Bonjour, Zhang San, bon matin!
Bonjour, Li Si, comment ça va?

Dans cette fonction, le paramètre name n'a pas de valeur par défaut, donc le paramètre name doit être fourni lors de l'appel de cette fonction (obligatoire).

D'autre part, la valeur par défaut du paramètre msg est "Good morning!". Par conséquent, il n'est pas nécessaire de fournir de valeur lors de l'appel de la fonction. Si une valeur est fournie lors de l'appel, elle remplacera la valeur par défaut.

Tous les paramètres d'une fonction peuvent avoir une valeur par défaut. Mais une fois que des paramètres par défaut sont définis, tous les paramètres à droite doivent également avoir une valeur par défaut.

Cela signifie que les paramètres non par défaut ne peuvent pas suivre les paramètres par défaut. Par exemple, si nous définissons l'en-tête de la fonction suivante :

def greet(msg = "Good morning!", name):

Nous recevons le message d'erreur suivant :

SyntaxError: non-argument par défaut suivant argument par défaut

Paramètres de mot-clé Python

Lorsque nous appelons une fonction avec certaines valeurs, ces valeurs sont attribuées aux paramètres en fonction de leur position.

Par exemple, dans la fonction greet() ci-dessus, lorsque nous l'appelons greet("Bruce", "How do you do?") le valeur "Bruce" est attribuée au paramètrenameEt "How do you do?" a été attribué à msg.

Python allows calling functions with keyword arguments. When we call functions in this way, the order (position) of the parameters can be changed. Subsequent calls to the above function are valid and produce the same result.

# 2keyword arguments
greet(name="Bruce", msg="How do you do?")
# 2keyword arguments, the order of parameters can be changed
greet(msg="How do you do?", name="Bruce") 
#1 position arguments, 1 keyword arguments
greet("Bruce", msg="How do you do?")

As we have seen, we can mix positional arguments with keyword arguments during the function call. However, we must remember that keyword arguments must follow positional arguments.

Placing a positional argument after keyword arguments will cause an error. For example, the function call is as follows:

greet(name="Bruce","How do you do?")

This will cause an error:

SyntaxError: non-keyword arg after keyword arg

Python arbitrary parameters

Sometimes, we do not know in advance how many parameters will be passed to the function. Python allows us to handle this situation by using function calls with an arbitrary number of arguments.

In the function definition, we use an asterisk (*) before the parameter name to indicate this type of parameter.*)represents such parameters. This is an example.

def greet(*names):
    """This function greets the following objects:
        All the people in the tuple list."""
    # Name is a tuple with parameters
    for name in names:
        print("Hello", name)
greet("Monica", "Luke", "Steve", "John")

Output results

Hello Monica
Hello Luke
Hello Steve
Hello John

Here, we called a function with multiple parameters. These parameters are wrapped into a tuple before being passed to the function. Inside the function, we use a for loop to retrieve all the parameters.