Qu'est-ce qu'une fonction ? : Une fonction est un bloc de code nommé qui exécute une tâche ou renvoie une valeur Pourquoi avez-vous besoin de fonctions en Python ?
Parfois, vous devez effectuer une tâche plusieurs fois dans un programme. Et vous ne voulez pas copier le code de cette même tâche à tous les endroits. Pour ce faire, vous intégrez le code dans une fonction et utilisez cette fonction pour exécuter la tâche chaque fois que vous en avez besoin.
Par exemple, si vous souhaitez afficher une valeur à l'écran, vous devez appeler la fonction print(). En coulisse, Python exécute le code contenu dans la fonction print() pour afficher une valeur à l'écran.
En pratique, vous utilisez les fonctions pour diviser un gros programme en parties plus petites et plus faciles à gérer. Les fonctions rendent votre programme plus facile à développer, à lire, à tester et à maintenir.
La fonction print() est l'une des nombreuses fonctions intégrées dans Python. Cela signifie que ces fonctions sont disponibles partout dans le programme.
Dans ce tutoriel, vous apprendrez à définir des fonctions Python définies par l'utilisateur.
Voici une fonction simple qui affiche une salutation :
def ma_fonction():
print("Bonjour à l'aide de cette fonction ")
Cet exemple montre la structure la plus simple d'une fonction. Une fonction comporte deux parties principales : une définition de fonction et un corps.
1) Définition de la fonction
Une définition de fonction commence par le mot-clé def et le nom de la fonction (ma_fonction)
Si la fonction a besoin de certaines informations pour faire son travail, vous devez les spécifier à l'intérieur des parenthèses () qui suivent le nom de la fonction. Dans cet exemple, la fonction ma_fonction() n'a besoin d'aucune information, ses parenthèses sont donc vides.
La définition de la fonction se termine toujours par deux points ( :).
2) Corps de la fonction
Toutes les lignes indentées qui suivent la définition de la fonction constituent le corps de la fonction.
La ligne print("Bonjour à l'aide de cette fonction ") est la seule ligne de code réelle dans le corps de la fonction. La fonction ma_fonction() effectue une seule tâche : print("Bonjour à l'aide de cette fonction ").
Appel d'une fonction
Lorsque vous souhaitez utiliser une fonction, vous devez l'appeler. Un appel de fonction indique à Python d'exécuter le code contenu dans la fonction.
Pour appeler une fonction, utilisez le nom de la fonction suivi de parenthèses .
L'exemple suivant appelle la fonction ma_fonction(). Comme la fonction ma_fonction() n'a besoin d'aucune information, vous devez spécifier des parenthèses vides comme ceci :
# definition de la fonction
def ma_fonction():
print("Bonjour à l'aide de cette fonction ")
#appelle de la fonction
ma_fonction()
les arguments
les arguments sont des informations qui peuvent être transmises à une fonction.
Les arguments sont spécifiés après le nom de la fonction, entre parenthèses. Vous pouvez ajouter autant d'arguments que vous le souhaitez, en les séparant simplement par une virgule.
L'exemple suivant présente une fonction avec un seul argument (nom). Lorsque la fonction est appelée, nous lui transmettons un argument, qui est utilisé dans la fonction pour imprimer la salutation :
def ma_fonction(nom):
print("Bonjour "+nom+" à l'aide de cette fonction ")
ma_fonction("Emile")
ma_fonction("sara")
ma_fonction("tout le mode")
Paramètres ou Arguments ?
Les termes "paramètre" et "argument" peuvent être utilisés pour la même chose : des informations qui sont transmises à une fonction.
Du point de vue d'une fonction :
Un paramètre est la variable listée entre les parenthèses dans la définition de la fonction. .
Un argument est la valeur qui est envoyée à la fonction lorsqu'elle est appelée.
Par défaut, une fonction doit être appelée avec le nombre correct d'arguments. Ce qui veut dire que si la fonction attend 2 arguments, il faut appeler la fonction avec 2 arguments, ni plus, ni moins.
Exemple Cette fonction attend 2 arguments, et obtient 2 arguments :
def ma_fonction(nom,prenom):
return "Bonjour "+prenom+" "+nom+" à l'aide de cette fonction "
salutation=ma_fonction("Emile")
print(salutation)
Arguments arbitraires, *args
Si vous ne savez pas combien d'arguments seront passés dans votre fonction, ajoutez un * devant le nom du paramètre dans la définition de la fonction.
De cette façon, la fonction recevra un tuple d'arguments, et pourra accéder aux éléments en conséquence :
Exemple Si le nombre d'arguments est inconnu, ajoutez un * devant le nom du paramètre :
Si vous ne connaissez pas le nombre d'arguments par mot-clé qui seront passés dans votre fonction, ajoutez deux astérisques : ** devant le nom du paramètre dans la définition de la fonction.
De cette façon, la fonction recevra un dictionnaire d'arguments, et pourra accéder aux éléments en conséquence :
Exemple Si le nombre d'arguments est inconnu, on ajoute un double ** devant le nom du paramètre :
L'exemple suivant montre comment utiliser une valeur de paramètre par défaut.
Si nous appelons la fonction sans argument, elle utilise la valeur par défaut :
Exemple :
Vous pouvez envoyer n'importe quel type de données comme argument à une fonction (chaîne de caractères, nombre, liste, dictionnaire, etc.), et il sera traité comme le même type de données dans la fonction.
Par exemple, si vous envoyez un set comme argument, elle sera toujours un set lorsqu'il atteindra la fonction :
comme le montre l'exemple suivant:
def ma_fonction(voitures) :
for x in voitures:
voiture=x
print("La voiture disponible est " + voiture)
voitures={"rouge","blanche","grise"}
ma_fonction(voitures)
Valeurs de retour
Si vous souhaitez qu'une fonction renvoie une valeur, utilisez l'instruction return :
La définition d'une fonction ne peut pas être vide, mais si, pour une raison quelconque, vous avez une définition de fonction sans contenu, insérez l'instruction pass pour éviter d'obtenir une erreur.
Exemple
Python accepte également la récursion de fonctions, ce qui veut dire qu'une fonction définie peut s'appeler elle-même.
La récursion est un concept mathématique et de programmation courant. C'est-à-dire qu'une fonction s'appelle elle-même. Il présente l'avantage de vous permettre de parcourir des données en boucle pour atteindre un résultat.
Le développeur doit être très prudent avec la récursion, car il est facile de déraper en écrivant une fonction qui ne se termine jamais, ou une fonction qui utilise une quantité excessive de mémoire ou de puissance de processeur. Cependant, lorsqu'elle est écrite correctement, la récursion peut être une approche très efficace et mathématiquement élégante de la programmation.
Dans cet exemple, tri_recursion() est une fonction que nous avons définie pour s'appeler elle-même ("récursion"). Nous utilisons la variable k comme donnée, qui décrémente (-1) chaque fois que nous récurons. La récursion se termine lorsque la condition n'est pas supérieure à 0 (c'est-à-dire lorsqu'elle est égale à 0).
Pour un nouveau développeur, cela peut prendre un certain temps pour comprendre comment cela fonctionne exactement, la meilleure façon de le découvrir est de le tester et de le modifier.
Exemple de récursion:
def tri_recursion(k):
if(k > 0):
result = k + tri_recursion(k - 1)
print(result)
else:
result = 0
return result
print("Résultats de l'exemple de récursion")
tri_recursion(6)