Fonctions#
Nous avons utilisé des fonctions dans les leçons précédentes. Les fonctions ont un nom et des paramètres. Certaines renvoient un résultat, d’autres non. Nous les appelons généralement en utilisant resultat = nom(parametres).
Voir aussi
Examinons quelques fonctions, par exemple print(texte) et pow(x, y). La fonction print prend un paramètre (ou plusieurs paramètres) et ne renvoie rien :
result = print('Hello world')
Hello world
result
La fonction pow a deux paramètres et renvoie un résultat :
result = pow(2, 3)
result
8
Fonctions personnalisées#
Vous pouvez DEFinir vos propres fonctions en utilisant l’instruction def. Après l’instruction def, vous devez spécifier le nom de votre fonction et entre parenthèses ses paramètres. Ensuite vient deux points : et toutes les lignes de code suivantes qui sont indentées font partie de cette fonction. Une instruction return finale renvoie le résultat à l’endroit d’où la fonction a été appelée.
def sum_numbers(a, b):
result = a + b
return result
Vous pouvez ensuite appeler votre fonction aussi souvent que vous le souhaitez
sum_numbers(3, 4)
7
sum_numbers(5, 6)
11
Parfois, vous voulez sauvegarder le résultat de votre fonction dans une variable.
c = sum_numbers(4, 5)
print(c)
9
Simplifier le code en utilisant des fonctions#
Supposons que vous ayez un algorithme complexe qui peut vous dire si un nombre est pair ou impair. Mettons cet algorithme dans une fonction et appelons-le plus tard. Pour notre algorithme, nous utiliserons l’opérateur modulo %.
def print_odd_or_even(number):
if number % 2 == 0:
print(number, "is even")
else:
print(number, "is odd")
print_odd_or_even(3)
3 is odd
print_odd_or_even(4)
4 is even
print_odd_or_even(10)
10 is even
Ainsi, au lieu d’écrire le même bloc if-else encore et encore, nous pouvons simplement appeler notre fonction personnalisée print_odd_or_even.
Documenter les fonctions#
Vous pouvez documenter ce que fait une fonction dans sa chaîne de documentation (doc string). La chaîne de documentation suit immédiatement l’en-tête de la fonction et ressemble à ceci :
def square(number):
'''
Élève un nombre au carré en le multipliant par lui-même et renvoie le résultat.
'''
return number * number
Vous pouvez ensuite lire la documentation de la fonction comme ceci :
print(square.__doc__)
Squares a number by multiplying it with itself and returns its result.
Essayez également ceci si vous voulez que la chaîne de documentation s’affiche côte à côte dans votre notebook :
square?
Signature: square(number)
Docstring: Squares a number by multiplying it with itself and returns its result.
File: /var/folders/p1/6svzckgd1y5906pfgm71fvmr0000gn/T/ipykernel_11914/1507435947.py
Type: function
Au fait, vous pouvez faire cela avec n’importe quelle fonction :
import math
print(math.sqrt.__doc__)
Return the square root of x.
print(math.exp.__doc__)
Return e raised to the power of x.
Exercice#
Écrivez une fonction qui prend deux paramètres : nombre_de_points_dans_lexamen et nombre_total_de_points_dans_lexamen et renvoie une note de 1 à 5. Les étudiants avec > 95% des points obtiennent la note 1, au-dessus de 80% ils obtiennent la note 2, au-dessus de 60% la note 3 et au-dessus de 50% la note 4. Les étudiants avec moins de 50% obtiennent la note 5 et doivent repasser l’examen. Ensuite, appelez la fonction pour trois étudiants qui ont obtenu 15, 25 et 29 points dans un examen avec un total de 30 points.