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.