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