Fonctions en Python
Lorsqu’une tâche doit être réalisée plusieurs fois par un programme avec
seulement des paramètres différents, on peut l’isoler au sein d’une fonction.
Définition d’une fonction - def
La syntaxe Python pour la définition d’une fonction est la suivante :
def nom_fonction(liste de paramètres):
bloc d'instructions
Vous pouvez choisir n’importe quel nom pour la fonction que vous créez, à
l’exception des mots-clés réservés du langage, et à la condition de n’utiliser
aucun caractère spécial ou accentué (le caractère souligné « _ » est permis).
Comme c’est le cas pour les noms de variables, on utilise par convention des
minuscules, notamment au début du nom (les noms commençant par une
majuscule seront réservés aux classes).
Corps de la fonction
Comme les instructions if, for et while, l’instruction def est une instruction
composée. La ligne contenant cette instruction se termine obligatoirement
par un deux-points :, qui introduisent un bloc d’instructions qui est précisé
grâce à l’indentation. Ce bloc d’instructions constitue le corps de la
fonction.
Fonction sans paramètre
Exemple
def compteur3():
i = 0
while i < 3:
print(i)
i = i + 1
print("bonjour")
compteur3()
compteur3()
Nous pouvons également l’incorporer dans la définition d’une autre fonction.
Exemple de fonction qui appelle une autre fonction
def compteur3():
i = 0
while i < 3:
print(i)
i = i + 1
def double_compteur3():
compteur3()
compteur3()
print("bonjour")
double_compteur3()
Fonction avec paramètre
def compteur(stop):
i = 0
while i < stop:
print(i)
i = i + 1
compteur(4)
compteur(2)
Utilisation d’une variable comme argument
L’argument que nous utilisons dans l’appel d’une fonction peut être une
variable.
Exemple
def compteur(stop):
i = 0
while i < stop:
print(i)
i = i + 1
a = 5
compteur(a)
Fonction avec plusieurs paramètres
Exemple
La fonction suivante utilise trois paramètres : start qui contient la valeur
de départ, stop la borne supérieure exclue comme dans l’exemple
précédent et step le pas du compteur.
def compteur_complet(start, stop, step):
i = start
while i < stop:
print(i)
i = i + step
compteur_complet(1, 7, 2)
Variables locales, variables globales
Variables locales
A chaque fois que nous définissons des variables à l’intérieur du corps
d’une fonction, ces variables ne sont accessibles qu’à la fonction elle-
même. On dit que ces variables sont des variables locales à la fonction.
Une variable locale peut avoir le même nom qu’une variable de l’espace
de noms global mais elle reste néanmoins indépendante.
def test():
b = 5
print(a, b)
a = 2
b = 7
test()
print(a, b)
Il peut se faire par exemple que vous ayez à définir une fonction qui soit
capable de modifier une variable globale. Pour atteindre ce résultat, il
vous suffira d’utiliser l’instruction global. Cette instruction permet
d’indiquer - à l’intérieur de la définition d’une fonction - quelles sont les
variables à traiter globalement.
On va ici créer une fonction qui a accès à la variable globale b.
def test():
global b
b = 5
print(a, b)
a = 2
b = 7
test()
print(a, b)
les ateliers
Atelier N1
division# Demander à l'utilisateur d'entrer deux nombres
num1 = float(input("Entrez le premier nombre : "))
num2 = float(input("Entrez le deuxième nombre : "))
def somme():
somme = num1 + num2
print(f"Somme : {somme}")
def soustraction():
soustraction = num1 - num2
print(f"Soustraction : {soustraction}")
def produit():
produit = num1 * num2
print(f"Produit : {produit}")
def division():
if num2 != 0:
division = num1 / num2
else:
division = "Impossible (division par zéro)"
print(f"Division : {division}")
print("1-Somme")
print("2-Soustraction")
print("3-Produit")
print("4-Division")
choix=int(input("Entrer votre choix :"))
match choix:
case 1:somme()
case 2:soustraction()
case 3:produit()
case 4:division()
case _:print("choix invalide")
Atelier N2
result=0
def somme(n1,n2):
global result
result = n1 + n2
def soustraction(n1,n2):
global result
result = n1 - n2
def produit(n1,n2):
global result
result = n1 * n2
def division(n1,n2):
global result
if n2 != 0:
result = n1 / n2
else:
result = "N/A"
print("1-Somme")
print("2-Soustraction")
print("3-Produit")
print("4-Division")
n1=int(input("N1: "))
n2=int(input("N2: "))
choix=int(input("Entrer votre choix :"))
match choix:
case 1:somme(n1,n2)
case 2:soustraction(n1,n2)
case 3:produit(n1,n2)
case 4:division(n1,n2)
case _:print("choix invalide")
print(f"resultat : {result}")
Atelier N3
def somme(n1,n2):
return n1 + n2
def soustraction(n1,n2):
return n1 - n2
def produit(n1,n2):
result = n1 * n2
def division(n1,n2):
if n2 != 0:
return n1 / n2
else:
result = "N/A"
print("1-Somme")
print("2-Soustraction")
print("3-Produit")
print("4-Division")
n1=int(input("N1: "))
n2=int(input("N2: "))
choix=int(input("Entrer votre choix :"))
result=0
match choix:
case 1:result=somme(n1,n2)
case 2:result=soustraction(n1,n2)
case 3:result=produit(n1,n2)
case 4:result=division(n1,n2)
case _:print("choix invalide")
print(f"resultat : {result}")
Atelier 4 / Appel d’une fonction dans une fonction
Exemple l’appel de la fonction somme(n1,n2) dans la fonction moyenne(nb)
def somme(n1,n2):
return n1 + n2
def soustraction(n1,n2):
return n1 - n2
def produit(n1,n2):
return n1 * n2
def division(n1,n2):
if n2 != 0:
return n1 / n2
else:
return "N/A"
nb=2
def moyenne(nb):
moy=int(somme(n1,n2))/nb
return moy
print("1-Somme")
print("2-Soustraction")
print("3-Produit")
print("4-Division")
print("5-Moyenne")
n1=int(input("N1: "))
n2=int(input("N2: "))
choix=int(input("Entrer votre choix :"))
result=0
match choix:
case 1:result=somme(n1,n2)
case 2:result=soustraction(n1,n2)
case 3:result=produit(n1,n2)
case 4:result=division(n1,n2)
case 5:result=moyenne(nb)
case _:print("choix invalide")
print(f"resultat : {result}")