Académique Documents
Professionnel Documents
Culture Documents
Accueil
Plan du cours
Introduction
1. Installation
2. Variables
3. Types
4. If
5. While
6. For ... in
7. Fonctions
8. Interfaces graphiques
9. Listes
10. Interfaces graphiques 2
11. Traitement de l'image
Les exercices
Les QCM
Reeborg
Mini projets
Codage
L'ordinateur
Liens et ressources
Les fonctions.
Plan du chapitre :
1. Éviter de se répéter.
2. Première définition des fonctions.
3. Vraies fonctions et procédures.
4. Portée des variables : variables locales et variables globales.
5. Modifier une variable globale depuis l'intérieur d'une fonction.
6. En résumé :
1) Éviter de se répéter.
Intéressons-nous au panneau d'affichage dans un aéroport :
L'employé chargé des affichages pourrait envisager le programme suivant :
Il semble cependant inutile de re-taper à longueur de journée les mêmes mots « Embarquement pour»,
« à ».
Une solution plus économique consiste à écrire une séquence d'instructions unique destinée à être ré-
utilisée aussi souvent que nécessaire.
C'est le premier objectif de la notion de fonction. Examinons le programme suivant :
vol("Bordeaux", "10h35")
vol("Toulouse", "10h43")
vol("Marseille", "10h57")
vol("Lille", "11h03")
vol("Strasbourg", "11h10")
vol("Lyon", "11h17")
Ce programme fournit exactement le même résultat que le précédent. Nous avons créé une fonction vol
qui est utilisée plusieurs fois de suite, pour peu qu'on lui fournisse, lors de son appel, les paramètres
dont elle a besoin pour fonctionner.
2) Première définition des fonctions.
En python, la syntaxe pour définir une fonction est la suivante :
def NomDeLaFonction(variable) :
...
bloc d'instructions
...
Fonctionnement :
Remarques :
Des fonctions, nous en utilisons depuis le premier chapitre : l'instruction « print("Bonjour") » n'est
autre que l'appel de la fonction print, avec en argument la valeur de variable « "Bonjour" ».
En effet, Python comprend un très grand nombre de fonctions prédéfinies : des fonctions déjà
définies par les développeurs de Python.
A celles-ci, nous allons maintenant en ajouter d'autres, que nous coderons nous-mêmes en fonction
de nos besoins.
--> Exercices 1, 2, 3, 4.
def carre(nombre) :
resultat = nombre**2
return resultat
a = carre(12)
print("Le carré de 12 est : ")
print(a)
L'instruction return, qui vient toujours en dernière ligne de la fonction, définit ce que doit renvoyer la
fonction.
La valeur (ou l'objet) renvoyée pourra, par exemple, être stockée dans une variable et ré-exploitée par
le programme.
Syntaxe d'une fonction renvoyant un résultat:
--> Exercices 5 et 6.
def table(base) :
print("Nous allons afficher la table des ", base, " :")
for compteur in range(11):
print(compteur*base)
table(9)
Lorsque nous définissons une variable à l’intérieur du corps d’une fonction, cette variable n'est
accessible qu’à la fonction elle-même. On dit que cette variable est une variable locale à la fonction.
C’est le cas ci-dessus de la variable base. Chaque fois que la fonction table est appelée, Python réserve
pour elle, dans la mémoire de l'ordinateur un espace de noms. Le contenu de la variable base est
contenu dans cet espace qui est innacessible depuis l'extérieur de la fonction. Ainsi par exemple, si nous
essayons d’afficher le contenu de la variable base juste après avoir effectué l’exercice ci-dessus, nous
obtenons un message d’erreur :
>>> print(base)
Traceback (most recent call last):
File "", line 1, in
NameError: name 'base' is not defined
>>>
L'ordinateur nous signale clairement que la variable base lui est inconnue, alors qu’elle était correctement
affichée par la fonction table juste avant. L’espace de noms qui contient la variable base est strictement
réservé au fonctionnement interne de table, et il est automatiquement détruit dès que la fonction a
terminé son travail.
Les variables définies à l’extérieur des fonctions sont des variables globales.
Leurs contenus sont visibles de l’intérieur d’une fonction, mais la fonction ne peut pas les modifier :
def test() :
print(globale)
globale = 5
test()
>>> 5
globale = 5
test()
print("depuis l'extérieur de la fonction, globale = ")
print(globale)
Nous constatons que la variable « globale » n'a pu être modifiée à l'intérieur de la fonction, puisque son
affichage final en dehors de la fonction donne toujours 5.
Pire encore, nous remarquons que le nom de variable « globale », est ici
utilisé pour définir deux variables différentes : l'une globale, l'autre locale.
Ces deux variables sont bel et bien des variables distinctes, indépendantes,
obéissant à une règle de priorité :
à l’intérieur d’une fonction (où elles pourraient entrer en
compétition), ce sont les variables définies localement qui ont la
priorité.
Ainsi lors de l'utilisation d'une variable dans une fonction, Python
commence par rechercher s'il existe une telle variable dans l'espace des
variables locales à la fonction. Ce n'est que si elle n'en trouve pas qu'elle
ira chercher si cette variable existe au niveau global.
def grandir() :
global age
age = age + 1
age = 15
grandir()
print(age)
>>> 16
--> QCM sur les variables locales et globales 2)
6) En résumé :
1) variable locale :
2) variable globale :
Lorsqu'une variable locale et une variable globale porte le même nom, à l'intérieur d'une fonction,
c'est la variable locale qui est prioritaire.
Une variable globale peut devenir modifiable à l'intérieur d'une fonction en indiquant dans la fonction
: global NomDeLaVariable
Exemple :
def lancer() :
""" fonction simulant un lancer de dé """
return randint(1,6)
###################################### 3) Main ######################################
#### aussi appelé : « corps principal du programme » ####
for i in range(1,n+1) :
essai = lancer()
print("Lancer ", i , " : ")
print(essai)
--> chapitre 8
Contact
CC BY-NC-SA 4.0