À la fin de cette séquence vous serez capable de :
Le jeu « Morpion », plus connu sous le nom de Tic Tac Toe en anglais, est un jeu de stratégie simple joué entre deux joueurs. Voici les règles du jeu :
En programmation, une fonction est un bloc de code nommé, autonome qui exécute une tâche spécifique ou un groupe de tâches associées dans le but de calculer une valeur ou un résultat final, qui est ensuite renvoyé au code de l'appelant.
La valeur qu'une fonction renvoie à l'appelant est appelée valeur de retour de la fonction.
L'importance d'une fonction réside dans le fait qu'elle est réutilisable. Elle évite la duplication (la répétition) de code. Plutôt que de répéter le même code dans un programme, on le centralise sous la forme d'une fonction que l'on appelle depuis tous les endroits où l'on en a besoin.
Pour finir, une fonction permet de décomposer une « grosse » tâche complexe en de sous-tâches plus simples et plus petites (on les appelle modules), chacune des fonctions se concentrant sur une tâche spécifique.
En conséquence, les fonctions améliorent la qualité, la lisibilité et la maintenance d’un programme.
On les appelle aussi fonctions natives ou built-in en anglais.
Exemples :
len('Connais-toi toi-même')
abs(-5.3)
type(["one", 2.5, False])
La définition d’une fonction se compose :
# Syntaxe
def nom_de_la_fonction(éventuels paramètres):
............................
Le corps de la fonction
............................
return valeur_de_retour
Exemples :
from random import randint
#fonction sans paramètre
def loto():
nbre_aleatoire = randint(0, 10)
return nbre_aleatoire
#fonction avec un paramètre
def carre(x): # x est le paramètre de la fonction carre
y = x**2
return y
Le nombre de paramètres d’une fonction est variable (0, 1, 2...).
Lorsque l'on fait appel à une fonction, les paramètres sont appelés arguments.
Chaque paramètre de la définition de la fonction correspond, dans l’ordre, à un argument de l’appel. La correspondance se fait par affectation des arguments aux paramètres.
def volume(longueur, largeur, hauteur):
vol = longueur * largeur* hauteur
return vol
volume(4, 3, 2)
Lorsque la fonction volume est appelée, les arguments passés 2, 3 et 4 sont liés aux paramètres dans l'ordre de leur apparition :
longueur = 4
largeur = 3
hauteur = 2
def difference(nbre1, nbre2):
dif = nbre1 - nbre2
return dif
difference(5, 3)
Lorsque la fonction difference est appelée, les arguments passés 5 et 3 sont liés aux paramètres dans l'ordre de leur apparition :
nbre1 = 5
nbre2 = 3
difference(3, 5)
Lorsque la fonction difference est appelée, les arguments passés 3 et 5 sont liés aux paramètres dans l'ordre de leur apparition :
nbre1 = 3
nbre2 = 5
Lors de l'appel d'une fonction, il faut toujours faire attention à l'ordre des arguments fournis !
Cette façon d'appeler une fonction permet d'éviter le problème précédent. Elle est, par ailleurs, plus explicite.
difference(nbre1=5, nbre2=3)
difference(nbre2=3, nbre1=5)
def puissance(nombre, exposant=1):
resultat = nombre ** exposant
return resultat
puissance(3)
# L'unique argument fourni est affecté à nombre, par déafut exposant=1
puissance(3, 2)
puissance(4, 3)
Le résultat est contenu dans un objet de type tuple.
def aire_perimetre_rectangle(longueur, largeur):
aire = longueur * largeur
perimetre = 2 * (longueur + largeur)
return (perimetre, aire)
Remarque 1 :
Il est fortement conseillé d’adjoindre à la définition d’une fonction une docstring.
Une docstring est une chaîne de caractères au début d'une fonction qui spécifie (décrit) la fonction.
doc est l'abréviation de documentation.
Cette documentation peut contenir l'objectif de la fonction, la nature des paramètres, des informations sur les valeurs de retour ou toute autre information jugée utile.
Les docstrings sont également utilisées par les outils de programmation pour fournir une aide au débogage (on dit aussi débbugage) c'est-à-dire une aide à la recherche et la correction des erreurs d’un programme.
def volume(longueur, largeur, hauteur):
"""
Données : longueur, largeur et hauteur sont des nombres positifs.
Résultat : La fonction renvoie un nombre, le volume d'un parallélépipède.
"""
vol = longueur * largeur * hauteur
return vol
volume(4, 3, 2)
volume(4, 5, 6)
help(volume)
def difference(nbre1, nbre2):
"""
Input : nbre1 et nbre2 sont des nombres.
Output : La fonction renvoie un nombre qui est la différence entre nbre1 et nbre2.
"""
dif = nbre1 - nbre2
return dif
help(difference)
Un espace de noms est une région d'un programme dans laquelle les identifiants ont une signification. C'est une table de correspondance entre des noms et des objets.
Lorsqu'une fonction est appelée, un nouvel espace de noms est créé pour cette fonction, distinct de tous les autres espaces de noms qui existent déjà. On dit que cet espace de noms est local à la fonction et reste en place jusqu'à ce que la fonction se termine. Cela signifie que les variables locales ne sont accessibles qu'à l'intérieur de la fonction dans laquelle elles sont déclarées.
L'espace de nom du programme principal (le programme appelant, on dit aussi client) est dit global et ses variables sont dites globales.
# Variable globale
x = 10
def ma_fonction():
# Variable locale
y = 5
print(f"Dans la fonction {x = }.") # Accès à la variable globale
print(f"Dans la fonction {y = }.") # Accès à la variable locale
# Appel de la fonction
ma_fonction()
# Accès à la variable globale en dehors de la fonction
print(f"En dehors de la fonction {x = }.")
# Tentons d'accéder à la variable locale y en dehors de la fonction
# Cela provoquerait une erreur car y n'existe que dans l'espace de noms de la fonction
print(f"En dehors de la fonction {y = }.") # Cette ligne provoque une erreur
Les variables locales à une fonction « ne sont pas accessibles en dehors de la fonction ». En d'autres termes, une fonction permet de cacher un morceau de code. On dit que l'on l'encapsule.
Le programme appelant (le client de la fonction) communique avec la fonction seulement au travers de ses paramètres et les valeurs de retour. Une fonction est aussi appelée une API (Application Programming Interface pour Interface de Programmation d'Applications) permettant à des blocs de codes de cummuniquer entre eux.
Remarque :
une fonction sans le mot clé Return est appelée une procédure. Contrairement aux fonctions, les procédures ne traitent pas des données.
Faites-vous plaisir 1 :
On définit ci-dessous une fonction.
def prix_total(prix_unitaire, quantite, taxe):
"""
Paramètres : prix_unitaire et quantite sont des nombres,
taxe est un nombre décimal.
Sortie : Elle renvoie un nombre, le prix TTC d'un produit.
"""
total = prix_unitaire * quantite * (1 + taxe)
return total
Faites-vous plaisir 2 :
Faites-vous plaisir 3 :
Faites-vous plaisir 4 :
Faites-vous plaisir 5 :
Faites-vous plaisir 6 :
Faites-vous plaisir 7 :
Faites-vous plaisir 8 :