Afin de pouvoir personnaliser votre classeur sans détruire le classeur sur lequel travaille votre voisin, vous allez tout d'abord aller dans le menu File puis Make a copy.... Renommez le classeur en ajoutant votre nom à la fin du nom de fichier par exemple.

Découverte des fonctions

Analogie avec les mathématiques

Pour créer une fonction sous Python, au sens mathématique ou pas, on utilise le mot clé def pour définir notre fonction. Regardez l'exemple qui suit.

In [ ]:
def f(x):
    y=3*x-2
    return y

print(f(2))

Arrêtons-nous un moment sur ce code :

  • On reconnaît le mot clé def dont on vient de parler. On le fait suivre du nom de la fonction - ici f - suivi par les arguments que cette fonction prend en entrée entre parenthèse - ici un seul argument est passé : x.
  • Pour savoir ou commence et ou finit la fonction, python utilise la notion de bloc. Un bloc

    • commence par :
    • est décalé par rapport au début de la marge Ainsi notre fonction commence à la ligne y=et se finit après le return.

    On retrouve encore les fameux blocs qui commencent par : et qui sont décalés par rapport à la marge que nous avons déjà rencontré dans les tests, les boucles for, while etc...

  • La ligne y=3*x-2 est assez explicite...

  • La ligne return y est importante : c'est elle qui indique ce que doit renvoyer la fonction.

Il est très facile, une fois une fonction définie d'afficher des valeurs. On tape simplement sur la ligne de saisie ce que l'on écrirait sur notre cahier de maths :

In [ ]:
f(5)

La fonction f est ici un moyen rapide d'exécuter le calcul y=3*x-2 sans avoir à retaper la formule

Généralisation de la notion de fonction

Une fonction au sens Python généralise l'exemple que nous avons vu ci-dessus au sens ou une fonction en programmation est un morceau de code auquel on peut faire appel par un nom.

  • Une fonction peut prendre un ou plusieurs arguments en entrée (paramètres passés à la fonction)
  • Une fonction, contrairement à ce qu'on voit en maths, ne retourne pas forcément de valeur. Elle effectue une tâche précise.
  • Une fonction permet de rendre le code plus facile à lire en séparant un problème complexe en plusieurs taches plus simples pouvant être traitées séparément.

Observez l'exemple ci-dessous et répondez aux questions posées ensuite :

In [ ]:
def table(n,limite):
    print("Table de multiplication de ",n)
    for i in range(1,limite+1):
        print(i,"x",n,"=",i*n)

Comment s'appelle la fonction ?

Votre réponse ...

Quel(s) arguments prend-elle ?

...

Que retourne t-elle ?

...

Que fait-elle ?

...

Appelez cette fonction pour sortir la table de 7 pour des facteurs allant de 1 à 9.

In [ ]:
 

A vous de jouer

En mathématiques, on utilise la fonction factorielle d'un nombre pour calculer le produit de tous les entiers non nuls entre 1 et ce nombre. Par exemple :

Factorielle 5 (que l'on note 5!) se calcule par la formule : $5!=1\times 2\times 3\times 4\times 5=120$

Ecrire une fonction factorielle prenant en argument un entier et retournant la factorielle de ce nombre.

In [ ]:
 

Vous avez vu en première l'opérateur k parmi n noté ${n} \choose {k}$ permettant de comptabiliser le nombre de chemins menant à k succès dans une répétition de n expériences Succès/Echec.

On peut montrer que ce nombre de chemins peut se calculer facilement au moyen de la fonction factorielle vu plus haut : ${n \choose k }=\dfrac{n!}{k!(n-k)!}$

Ecrire une fonction coefbinom prenant en argument deux entiers k et n et retournant la valeur de $n \choose k$.

On pourra faire appel à la fonction factorielle vue ci-dessus.

In [ ]:
 

Vous voyez que des fonctions peuvent s'appeler enre elles. Le code est ainsi plus concis et plus limpide. On évite les répétitions et on limite les erreurs.

Il est donc fortement conseillé de les utiliser le plus possible dans vos programmes et votre projet.

D'une manière générale, quand vous allez chercher à écrire un programme pour réaliser une tache, avant d'écrire la moindre ligne de code, vous allez réfléchir au découpage de votre tache en sous taches qui seront éxécutées chacune par une ou plusieurs fonctions. Une fois la spécification précise de ces fonctions réalisées, alors vous pourrez commencer à écrire ces fonctions, puis votre programme.

Conclusion

Les fonctions jouent un rôle fondamental en informatique. Aucun programme n'est écrit d'un bloc. Imaginez un programme comme OpenOffice qui contient plusieurs centaines de milliers de lignes de codes écrites bout à bout sans structure...

Vous devrez prendre l'habitude de concevoir vos propres fonctions pour répondre à un problème donné.

Plus tard, nous allons voir la notion d'objet qui est apparu au début des années 80 et qui vient encore enrichir ce concept de fonction. Aujourd'hui tous les langages modernes sont orientés Objet. La programmation par objet a permis l'émergence de systèmes d'exploitation offrant des interfaces graphiques évoluées (Linux, MacOs...).

Vous allez vous-même manipuler des objets quand vous allez découvrir la programmation d'interfaces graphiques pour vos projets.