Aller au contenu

Les fonctions

type(), int(), str(), etc... sont des fonctions prédéfinies en Python. Comme tous les autres langages de programmation, Python permet aussi de définir ses propres fonctions.

Cela permet d'effectuer (ou d'adapter) la même suite d'instructions à différents endroits d'un programme sans recopier plusieurs fois les mêmes « bouts » de code. En quelque sorte, une fonction est un sous-programme.

Les programmes complexes deviennent ainsi plus courts et plus lisibles.

Définir une fonction

En Python, on définit une fonction à l'aide du mot-clef def.

Toutes les fonctions devront être définies sous la forme générique suivante (le nombre de paramètres peut bien sûr être différent de 2) :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
def nomFonction(parametre1, parametre2):
    """
    parametre1 - type du paramètre, précondition éventuelle
    parametre2 - type du paramètre, précondition éventuelle

    Sortie: type de ce qui est renvoyé - liens avec les paramètres
            ou description de l'affichage réalisé
    """

    bloc instructions       # CORPS de la fonction

    return Sortie           # Lorsque la fonction renvoie une valeur

Remarque

Comme pour les variables, le nom choisi pour la fonction doit être explicite (c'est à dire correspondre à son rôle).

Exemple

  1. Complétez la définition de la fonction Puis3() qui doit renvoyer le cube de la valeur (numérique) saisie en paramètre.

    1
    2
    3
    4
    5
    6
    7
    def Puis3(nb):
        """
        nb - float (ou int)
        Sortie : float (ou int), le cube de nb
        """
        y = 
        return 
    
    Une solution possible
    1
    2
    3
    4
    5
    6
    7
    def Puis3(nb):
        """
        nb - float (ou int)
        Sortie : float (ou int), le cube de nb
        """
        cube = nb*nb*nb
        return cube
    
    Une autre solution
    1
    2
    3
    4
    5
    6
    def Puis3(nb):
        """
        nb - float (ou int)
        Sortie : float (ou int), le cube de nb
        """
        return nb*nb*nb
    
  2. Utilisez cette fonction dans la console.

    Solution pas à pas
    • On enregistre le code de cette fonction dans un éditeur, par exemple Pyzo, en le nommant exemple_cube.py (ou tout autre nom) : Utiliser une fonction

    • En essayant d'utiliser directement la fonction Puis3() dans la console, celle-ci renvoie un message d'erreur :

      >>> Puis3(2.5)
      NameError: name 'Puis3' is not defined
      

    • On exécute ce code avec la touche [F5], la console met en mémoire le contenu du fichier exemple_cube.py :

      >>> (executing file "exemple_cube.py")
      

    • On peut à présent utiliser la fonction Puis3() définie dans ce script :

      >>> Puis3(2.5)
      15.625
      

Préconditions

On appelle « Préconditions » les conditions à respecter par les paramètres d'une fonction pour que les instructions effectuées par cette fonction aient un sens. Ces préconditions sont données par le cahier des charges du programme et sont rappelées dans le docstring.

Vocabulaire

Le docstring (on peut traduire par « chaîne de caractères de documentation ») est la partie située entre les triples guillemets « """ » et « """ » :

1
2
3
4
5
6
7
8
def nomFonction(parametre1, parametre2):
    """
    parametre1 - type du paramètre, précondition éventuelle
    parametre2 - type du paramètre, précondition éventuelle

    Sortie: type de ce qui est renvoyé - liens avec les paramètres
            ou description de l'affichage réalisé
    """

Ce docstring présente au moins la forme minimale donnée ci-dessus. Il spécifie la fonction, c'est-à-dire :

  • décrit les paramètres (leur type) ;
  • les préconditions éventuelles sur ces paramètres ;
  • le type de la sortie ainsi que son lien avec les paramètres.

Fonction help()

La fonction help() permet d'afficher dans la console le docstring de la fonction passée en paramètre. Cela permet de comprendre les spécifications d'une fonction codée par quelqu'un d'autre et évite de lire l'intégralité du fichier informatique (qui peut contenir plusieurs milliers de lignes) dans lequel cette fonction est définie.

  1. On enregistre la fonction dans un fichier nommé exemple_help.py :

    1
    2
    3
    4
    5
    6
    def Puis3(nb):
        """
        nb - float (ou int)
        Sortie : float (ou int), le cube de nb
        """
        return nb*nb*nb
    

  2. On exécute ce fichier, la console redémarre :

    >>> RESTART --- exemple_help.py ---
    

  3. On applique la fonction help() à la fonction Puis2() :

    >>> help(Puis3)
    Help on function Puis3 in module __main__:
    
    Puis3(nb)
        nb - float (ou int)
        Sortie : float (ou int), le cube de nb
    (END)