Python : Les fonctions & modules

Vous lisez
Python : Les fonctions & modules

Introduction

Les fonctions permettent de regrouper plusieurs instructions dans un bloc qui sera appelé par un nom.

Il s’agit d’un concept essentiel en programmation objet !

cours-python-les-fonction-8

Création de fonctions

Nomenclature

1
2
def nomDeLaFonction(parametre1, parametre2, parametreN):
    # Bloc d'instructions

Avec:

  • def : Abréviation de “define” (« définir », en anglais), prélude à toute construction de fonctions
  • Une fonction se nomme exactement comme une variable
  • Ne pas utiliser un nom de fonction ou variable déjà existante (noms uniques)
  • Les paramètres sont séparés par des virgules
  • La liste des paramètres est encadrée par des parenthèses
  • Les parenthèses sont OBLIGATOIRES même s’il n’y a pas de paramètres
  • Toujours et encore “:” pour clôturer la ligne

Exemple: La table de 7

1
2
3
4
5
6
7
8
# Definition de la fonction
def tableDe7():
    # Instruction de la fonction
    nbr = 7
    for i in range(11):
        print "%i * %i = %i" % (i, nbr, i*nbr)
# Appel de la fonction
tableDe7()

0 * 7 = 0
1 * 7 = 7
2 * 7 = 14
3 * 7 = 21
4 * 7 = 28
5 * 7 = 35
6 * 7 = 42
7 * 7 = 49
8 * 7 = 56
9 * 7 = 63
10 * 7 = 70

Les paramètres

1
2
3
4
5
6
7
# Definition de la fonction avec 1 parametre
def table(nbr):
    # Instruction de la fonction
    for i in range(11):
        print "%i * %i = %i" % (i, nbr, i*nbr)
# Appel de la fonction avec comme parametre "8"
table(8)

1
2
3
4
5
6
7
# Definition de la fonction avec 2 parametres
def table(nbr, limite):
    # Instruction de la fonction
    for i in range(limite + 1):
        print "%i * %i = %i" % (i, nbr, i*nbr)
# Appel de la fonction avec comme parametre "8" et "20"
table(8, 20)

Dans le cas ou il y a plusieurs paramètres, sans les nommer comme ici, il faut respecter l’ordre d’appel.

Valeur par défaut des paramètres

Il est possible de préciser une valeur par défaut pour les paramètres d’une fonction.

1
2
3
4
5
6
7
# Definition de la fonction avec 1 OU 2 parametres
def table(nbr, limite=10):
    # Instruction de la fonction
    for i in range(limite + 1):
        print "%i * %i = %i" % (i, nbr, i*nbr)
# Appel de la fonction avec comme parametre uniquement "8"
table(8)

Il est ici possible d’appeler la fonctions de 2 façon:

  • Soit en précisant le numéro de la table ET le nombre limite : table(8, 20)
  • Soit en ne précisant QUE le numéro de la table : table(8)

Dans ce dernier cas, la limite sera par défaut égale à 10 comme définit dans la déclaration de la fonction.

Utilisation du nom des paramètres

Il est également possible d’appeler les paramètres par leur nom.
Ceci est notamment utile pour une fonction comptant un certain nombre de paramètres qui ont tous une valeur par défaut ou, moins couramment, sans valeur par défaut.

1
2
3
4
5
def maFonction(a=10, b="Bonjour", c=20):
    print b, a, c
maFonction(c=8, b="Hello", a=3)
maFonction(a=5, c=30)
maFonction()

Dans ce cas, peu importe le nombre de paramètres et l’ordre dans lequel vous les appelez.

L’instruction “return »

Il existe des fonctions comme print qui ne “renvoient” rien et des fonctions telles que input ou type qui renvoient une valeur.

Attention: “renvoyer” et “afficher” sont deux choses différentes !

Vous pouvez capturer cette valeur en plaçant une variable devant.

1
resultat= maFonction(variable)

Les fonctions travaillent généralement sur des données et renvoient le résultat obtenu via un “return”.

1
2
3
4
5
def maFonction(variable):
    calcul = (variable * variable) + 12
    return calcul # On retourne le resultat du calcul
resultat = maFonction(5) # Reception de ce qui est envoye via le return de la fonction et stockage dans une variable
print resultat # Affichage du resultat

Les modules

Il s’agit d’un “bout de code que l’on a enfermé dans un fichier” regroupant un ensemble de fonctions et variables ayant (idéalement) toutes un rapport entre elles.

Si l’on veut travailler avec les fonctionnalités prévues par le module, il n’y a qu’à importer le module.

Il existe un grand nombre de modules disponibles sans qu’il soit nécessaire d’installer de bibliothèques supplémentaires.

Exemple de module intégré à Python

  • os : fonctions relatives au système d’exploitation
  • time : fonctions relatives au temps
  • math : fonctions mathématiques

La méthode “import”

Lorsque l’on ouvre un interpréteur Python, les fonctionnalités des modules ne sont pas incluses.

C’est à vous, programmeur, de penser à importer les modules dont vous aurez besoin.

1
2
import math # Import de toutes les fonctions du module "math" dans un nouvel espace de nom "math"
print math.sqrt(16) # Appel de la fonction "sqrt()" de l'espace de nom "math"

1
2
from math import sqrt # Import de la fonction "sqrt()" du module "math"
print sqrt(16) # Appel de la fonction "sqrt()"

1
2
from math import * # Import de toutes les fonctions du module, sans espace de nom
print sqrt(16) # Appel de la fonction "sqrt()"

Comment connaître la liste des fonctions d’un module ?

1
help("math.sqrt")

Help on built-in function sqrt in math:

math.sqrt = sqrt(...)
    sqrt(x)

    Return the square root of x.

En résumé

  • Une fonction est une portion de code contenant des instructions que l’on va pouvoir réutiliser facilement.
  • Découper son programme en fonctions permet une meilleure organisation.
  • Les fonctions peuvent recevoir des informations en entrée et renvoyer une ou plusieurs informations grâce au mot clé return.
  • Les fonctions se définissent de la façon suivante:
    def nomDeLaFonction(param1, param2, paramN):
  • Les modules servent à regrouper des fonctions et variables ayant un lien entre elles.
  • Les modules s’importent de la façon suivante:
    import nomDuModule

Cours basé sur les travaux de Vincent Le Goff

Qu'avez-vous pensé de cet article ?
J'aime
0%
Merci
0%
Pratique
0%
Incomplet
0%
Rien de neuf
0%
A propos de l'auteur
Olivier Schmitt
Photographe professionnel, originaire d'Alsace (France), ancien Directeur Technique sur les films d'animation "Minions", "Moi, Moche et Méchant" et "Le Lorax".
Commentaires
Laisser une réponse

Laisser une réponse