0% ont trouvé ce document utile (0 vote)
9 vues40 pages

Introduction À Python

Ce document est une introduction à Python pour la programmation scientifique, utilisant les bibliothèques NumPy et Matplotlib. Il couvre les bases de Python, y compris les opérations de base, les structures de contrôle comme les boucles et les conditions, ainsi que les types de données. Des exercices pratiques sont également proposés pour renforcer l'apprentissage.

Transféré par

Alouani Khouloud
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
9 vues40 pages

Introduction À Python

Ce document est une introduction à Python pour la programmation scientifique, utilisant les bibliothèques NumPy et Matplotlib. Il couvre les bases de Python, y compris les opérations de base, les structures de contrôle comme les boucles et les conditions, ainsi que les types de données. Des exercices pratiques sont également proposés pour renforcer l'apprentissage.

Transféré par

Alouani Khouloud
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 40

Chapitre 0 : Rappel général

I. Introduction à Python
1. Présentation des outils de programmation

Dans cette introduction à Python pour la programmation scientifique, nous


utiliserons Python comme langage et les
bibliothèques NumPy et Matplotlib pour le calcul scientifique et la visualisation.

Les programmes de base en Python (qui n’utilisent pas NumPy ou Matplotlib)


pourront être exécutés en ligne directement au sein de ce cours grâce à Online
Python Tutor.

Pour exécuter les programmes de ce cours sur votre ordinateur, il vous faudra
disposer de Python et des bibliothèques NumPy et Matplotlib.

Vous pouvez installer sur votre ordinateur le logiciel gratuit Anaconda qui offre
une installation aisée de l’ensemble de l’environnement de développement
nécessaire à ce cours :

https://www.anaconda.com/download/

Pour ce cours, nous utiliserons la version Python


3.6. Anaconda comprend Spyder (Scientific PYthon Development EnviRonment)
comme environnement de développement intégré.

Exécution d’un premier programme


Voici un premier exemple de programme :

L’affichage après exécution est :

Alouani khouloud
Chapitre 0 : Rappel général
2

Quelques bases rapides en Python


Dans Spyder, on dispose d’une zone de fenêtre pour l’interpréteur de
commandes IPython. Son invite de commande est différente de celle de
l’interpréteur Python standard (qui est >>>). Elle se présente de la façon
suivante :

2. Premiers calculs
Exemple de première utilisation de IPython :

Les parties qui débutent par In et Out correspondent aux entrées et sorties
respectivement.
Testez les calculs suivants :

Pour calculer une puissance, on utilise **.


3. L’opérateur /

Exemple

Alouani khouloud
Chapitre 0 : Rappel général
3

Pour réaliser une division entière, il faut utiliser // :

4.L’opérateur %
L’opérateur % (appelé opérateur modulo) fournit le reste de la division entière
d’un nombre par un autre.
Exemple

5. Affectation

La première ligne contient l’instruction a = 2. Pour comprendre cette instruction,


il faut imaginer que les informations sont stockées dans des boîtes au sein de la
mémoire de l’ordinateur. Pour manipuler les informations, on donne des noms à
ces boîtes. Ici on crée une boîte appelée a et on lui affecte la valeur 2. Par la suite,
on parlera de la variable a, puisque a peut contenir des valeurs variables.
Autrement dit, l’instruction a = 2 est une instruction d’affectation qui a pour effet
de mettre la valeur 2 dans la variable a.

6. Affichage - la fonction print()


Pour afficher, on utilise la fonction print() .

Alouani khouloud
Chapitre 0 : Rappel général
4

Il est possible de réaliser plusieurs affichages à la suite. Pour cela, on sépare les
éléments par des virgules.

7. La fonction range()
Si vous avez besoin de créer sur une suite d’entiers, vous pouvez utiliser la
fonction range(). Elle génère une suite arithmétique.

En Python 3, si on souhaite afficher les valeurs, il est nécessaire de convertir le


résultat en liste grâce à la fonction list(). Par exemple :

Le nombre de fin qui lui est passé n’est jamais dans la liste générée. Par exemple,
range(10) génère 10 valeurs, exactement les indices des éléments d’une séquence
de longueur 10. Il est possible de faire commencer l’intervalle à un autre nombre,
ou de spécifier un incrément différent (même négatif) :
De manière générale, on a :
range(valeur_initiale, borne_de_fin, pas)
Le pas peut être positif ou négatif. La valeur de la borne de fin (maximale ou
minimale) n’est jamais atteinte.
Exercice
Créer une liste contenant les entiers pairs allant de 10 à 20.

Alouani khouloud
Chapitre 0 : Rappel général
5

8. Accès aux éléments d’une liste

Pour accéder à un élément d’une liste, on indique entre crochets [] l’indice de


l’élément.
En Python, l’indice du premier élément d’une liste est 0 (ceci est à distinguer
d’autres langages).

9. La fonction len()
La fonction len() renvoie le nombre d’éléments. Par exemple :

10. Lecture d’informations au clavier - la fonction input()

Par défaut, la fonction input() renvoie une chaîne de caractères. Il faut donc
utiliser la fonction int() qui permet d’obtenir un entier.

II. Autre exemple de programme


1. Règles générales d’écriture
Les identificateurs
Un identificateur est une suite de caractères servant à désigner les différentes
entitées manipulées par un programme : variables, fonctions, classes…
En Python, un identificateur est formé de lettres ou de chiffres. Il ne contient pas
d’espace. Le premier caractère doit obligatoirement être une lettre. Il peut
contenir le caractère « _ » (underscore, en français « souligné »). Il est sensible à
la casse (distinction entre majuscule et minuscule).

Alouani khouloud
Chapitre 0 : Rappel général
6

Les mots-clés
Les mots réservés par le langage Python ( if , for , etc.) ne peuvent pas être utilisés
comme identificateurs.

2. Tests
L’instruction if est la structure de test la plus simple. Sa syntaxe en Python fait
intervenir la notion de bloc. Nous allons d’abord étudier cette notion plus en
détail.
3. Bloc d’instructions - Indentation
Un bloc est défini par une indentation obtenue en décalant le début des
instructions vers la droite grâce à des espaces en début de ligne (habituellement
4 espaces mais ce n’est pas obligatoire). Toutes les instructions d’un même bloc
doivent être indentées exactement au même niveau (c’est-à-dire décalées à
droite d’un même nombre d’espaces).Un bloc peut contenir une ou plusieurs
instructions, et notamment des instructions composées (tests, boucles, etc.).

Instruction if

Alouani khouloud
Chapitre 0 : Rappel général
7

condition est une expression booléenne, c’est-à-dire une expression qui prend
pour valeur True (Vrai) ou False (Faux).
L”instruction A n’est exécutée que si la condition est vérifiée (c’est-à-dire si elle
prend pour valeur True).
L’instruction if est une instruction composée. Le : (deux-points) à la fin de la
ligne introduit le bloc d’instructions qui sera exécuté si la condition est vérifiée.
Exemple 1 avec condition vraie :

Exemple 1 avec condition fausse :

Dans cet exemple, le bloc après le if contient deux instructions.


L’instruction print("Fin") ne fait pas partie du bloc car elle n’est pas indentée.

Alouani khouloud
Chapitre 0 : Rappel général
8

Instruction if … else

Exemple où la condition est vraie :

Alouani khouloud
Chapitre 0 : Rappel général
9

Une expression booléenne peut contenir les opérateurs de comparaison suivants :

OPÉRATEUR SIGNIFICATION
X == Y x est égal à y
X != Y x est différent de y
X>Y x est plus grand que y
X<Y x est plus petit que y
X >= Y x est plus grand ou égal à y
X <= Y x est plus petit ou égal à y

4. Opérateur logique and

Alouani khouloud
Chapitre 0 : Rappel général
10

5. Opérateur logique or

Alouani khouloud
Chapitre 0 : Rappel général
11

III. Boucles (séance 2)


Les boucles s’utilisent pour répéter plusieurs fois l’exécution d’une partie du programme.

1. Boucles bornées et non bornées


 Boucle bornée
Quand on sait combien de fois doit avoir lieu la répétition, on utilise
généralement une boucle for.
 Boucle non bornée
Si on ne connait pas à l’avance le nombre de répétitions, on choisit une
boucle while.

2. Boucle for
Exemple d’utilisation :

Affichage après exécution :

L’instruction for est une instruction composée, c’est-à-dire une instruction dont l’en-tête se
termine par deux-points :, suivie d’un bloc indenté qui constitue le corps de la boucle.

On dit que l’on réalise une itération de la boucle à chaque fois que le corps de la boucle est
exécuté.

Dans l’en-tête de la boucle, on précise après le mot-clé for le nom d’une variable (i dans
l’exemple ci-dessus) qui prendra successivement toutes les valeurs qui sont données après le
mot-clé in. On dit souvent que cette variable (ici i) est un compteur car elle sert à numéroter
les itérations de la boucle.

Il est possible d’obtenir le même résultat sans donner la liste des valeurs, mais en utilisant la
fonction range().

Alouani khouloud
Chapitre 0 : Rappel général
12

Pour parcourir les indices d’une liste, il est possible de combiner range() et len() comme ci-
dessous :

Affichage après exécution :

Rappel : La fonction len() renvoie le nombre d’éléments :

Dans l’exemple suivant, nous allons illustrer que la variable indiquée après for parcourt toutes
les valeurs de la liste donnée après in :

Alouani khouloud
Chapitre 0 : Rappel général
13

3. Boucle while
Syntaxe :

Exemple de programme :

Affichage après exécution :

Le mot-clé while signifie tant que en anglais. Le corps de la boucle (c’est-à-dire le bloc
d’instructions indentées) sera répété tant que la condition est vraie.

Dans l’exemple ci-dessus, x sera multiplié par 2 tant que sa valeur reste inférieure à 10.

Remarque : Si la condition est fausse au départ, le corps de la boucle n’est jamais


exécuté. Si la condition reste toujours vraie, alors le corps de la boucle est répété
indéfiniment.

Alouani khouloud
Chapitre 0 : Rappel général
14

4. Comment choisir entre boucle for et boucle while


En général, si on connaît avant de démarrer la boucle le nombre d’itérations à exécuter, on
choisit une boucle for. Au contraire, si la décision d’arrêter la boucle ne peut se faire que par
un test, on choisit une boucle while.

Note

Il est toujours possible de remplacer une boucle for par une boucle while .
Transformation d’une boucle for en un boucle while

Le programme ci-dessus est équivalent à:

5. Les instructions break et continue, et la clause else dans les


boucles

L’instruction break
L’instruction break permet de « casser » l’exécution d’une boucle
(while ou for). Elle fait sortir de la boucle et passer à l’instruction
suivante.
Exemple

Alouani khouloud
Chapitre 0 : Rappel général
15

Affichage après exécution :

Note

Dans le cas de boucles imbriquées, l’instruction break ne fait sortir que de la boucle la plus
interne.

Remarque : équivalent du do…while (faire…tant que)


Dans de nombreux langages, il existe une instruction do…while qui permet de créer une
boucle pour laquelle on ne connaît pas à l’avance le nombre de répétition, mais qui doit
s’exécuter au moins une fois. Cette instruction n’existe pas en Python, mais on peut
facilement reproduire son fonctionnement de la façon suivante :

5. L’instruction continue
L’instruction continue permet de passer prématurément au tour de boucle
suivant. Elle fait continuer sur la prochaine itération de la boucle.

Exemple

Alouani khouloud
Chapitre 0 : Rappel général
16

Affichage après exécution :

6. La clause else dans une boucle


La clause else dans un boucle permet de définir un bloc d’instructions qui
sera exécuté à la fin seulement si la boucle s’est déroulée complétement
sans être interrompue par un break .

Contrairement aux instructions présentes après la boucle, qui s’exécutent


dans tous les cas (avec ou sans interruption par un break ), le bloc
d’instructions défini dans la clause else ne s’exécutera pas lors de
l’interruption par un break . Après l’interruption, on passera directement
aux instructions après la boucle.

Autrement dit, le bloc de la clause else est exécuté lorsque la boucle se


termine par épuisement de la liste (avec for ) ou quand la condition
devient fausse (avec while ), mais pas quand la boucle est interrompue par
un break . Ceci est illustré dans la boucle suivante, qui recherche des
nombres premiers :

Alouani khouloud
Chapitre 0 : Rappel général
17

Affichage après exécution :

Alouani khouloud
Chapitre 0 : Rappel général
18

🟢 Exercice 1 : Somme des nombres de 1 à N

Énoncé :
Demande à l’utilisateur de saisir un nombre N puis calcule la somme des
nombres de 1 à N.

🟢 Exercice 2 : Afficher les nombres pairs de 1 à 20

Énoncé :
Affiche tous les nombres pairs entre 1 et 20.

🟠 Exercice 3: Compter les voyelles dans une phrase

Énoncé :
Demande une phrase à l’utilisateur et compte combien de voyelles (a, e, i,
o, u, y) elle contient.

🔵 Exercice 4 : Deviner un nombre (boucle while)

Énoncé :
Le programme choisit un nombre entre 1 et 10.
L’utilisateur doit le deviner jusqu’à trouver le bon nombre.

IV. Principaux types de données (séance 3)

Alouani khouloud
Chapitre 0 : Rappel général
19

Python est un language à typage dynamique, ce qui signifie qu’il n’est pas
nécessaire de déclarer les variables avant de pouvoir leur affecter une
valeur. La valeur que l’on affecte possède un type qui dépend de la
nature des données (nombre entier, nombre à virgule, chaîne de
caractères, etc). Le type du contenu d’une variable peut donc changer si
on change sa valeur.

1. La fonction type()

Pour connaître le type d’une donnée ou le type de la valeur d’une variable,


il suffit d’utiliser la fonction type() .

Exemples :

2. Le type int (entier)


Ce type est utilisé pour stocker un entier, en anglais integer. Pour cette
raison, on appelle ce type int .

3. Le type float (flottant)


Ce type est utilisé pour stocker des nombres à virgule flottante,
désignés en anglais par l’expression floating point numbers. Pour
cette raison, on appelle ce type : float . En français, on parle
de flottant.

Exemples :

Alouani khouloud
Chapitre 0 : Rappel général
20

4. Le type str (chaîne de caractères)


Sous Python, une donnée de type str est une suite quelconque de
caractères délimitée soit par des apostrophes (simple quotes), soit par des
guillemets (double quotes). str est l’abréviation de string, qui veut
dire chaîne en français.

5. Le type bool (booléen)


Le type bool est utilisé pour les booléens. Un booléen peut prendre les
valeurs True ou False .

Alouani khouloud
Chapitre 0 : Rappel général
21

Remarque : la fonction not est un opérateur logique qui renvoie l’opposé


de la valeur booléenne transmise. Pour True , on obtient False .
Réciproquement, il renvoie False quand on lui transmet True .

6. Le type list (liste)


Sous Python, on peut définir une liste comme une collection d’éléments
séparés par des virgules, l’ensemble étant enfermé dans des crochets.

Exemple :

7. Le type complex (complexe)


Python posséde par défaut un type pour manipuler les nombres
complexes. La partie imaginaire est indiquée grâce à la lettre « j » ou « J ».
La lettre mathématique utilisée habituellement, le « i », n’est pas utilisée
en Python car la variable i est souvent utilisé dans les boucles.

Exemples :

Alouani khouloud
Chapitre 0 : Rappel général
22

V. Tuples en Python(séance 4)
Alouani khouloud
Chapitre 0 : Rappel général
23

A partir des types de base (int, float, etc.), il est possible d’en élaborer de
nouveaux. On les appelle des types construits.

Un exemple de type construit est le tuple. Il permet de créer


une collection ordonnée de plusieurs éléments. En mathématiques,
on parle de p-uplet. Par exemple, un quadruplet est constitué de 4
éléments.

Les tuples ressemblent aux listes, mais on ne peut pas les modifier une
fois qu’ils ont été créés.

On dit qu’un tuple n’est pas mutable.

On le définit avec des parenthèses.

Parfois, les tuples ne sont pas entourés de parenthèses, même s’il s’agit
quand même de tuples.

Ainsi, on peut utiliser la notation suivante :

En fait, cela revient à :

Cette syntaxe avec plusieurs variables à gauche du signe = peut aussi être
utilisée avec une variable unique à droite si celle-ci contient un tuple.

Alouani khouloud
Chapitre 0 : Rappel général
24

Comment écrire une fonction qui renvoie un p-uplet de valeurs ?

Il est très facile de créer une fonction qui renvoie un tuple. Il suffit
d’indiquer ce tuple après return .

Note

Après return, il aurait été possible d’utiliser une notation avec des
parenthèses pour le tuple, par exemple return (3, 4).

Comment itérer sur les éléments d’un tuple ?

Comme une liste, il est possible de parcourir un tuple avec une boucle for.

La valeur d’un élément du tuple est obtenue en utilisant la même syntaxe


que pour une liste.

Alouani khouloud
Chapitre 0 : Rappel général
25

Comment créer un tuple qui contient un seul élément ?

Si on utilise seulement des parenthèses, on n’obtient pas le résultat


escompté.

En effet, les parenthèses sont alors considérées comme celles d’une


expression mathématique, comme par exemple dans 3*(4+1).

Pour créer un tuple contenant un seul élément, il faut donc utiliser une
syntaxe spécifique qui contient une virgule.

Si on veut récupérer l’unique valeur présente dans le tuple, on va pouvoir


utiliser les approches suivantes :

 Première approche

 Deuxième approche

La deuxième approche avec une virgule d, = b est plus légère que la


syntaxe qui utilise des crochets c = b[0].

Il est possible d’utiliser la syntaxe nom_de_variable, = aussi avec une liste


à un élément.

Alouani khouloud
Chapitre 0 : Rappel général
26

VI. Dictionnaires en Python (séance 5)


Comme on l’a vu avec les listes et les tuples, à partir des types de base
(int, float, etc.) il est possible d’élaborer de nouveaux types qu’on appelle
des types construits.

Un nouvel exemple de type construit est le dictionnaire.

Alouani khouloud
Chapitre 0 : Rappel général
27

Les éléments d’une liste ou d’un tuple sont ordonnés et on accéde à un


élément grâce à sa position en utilisant un numéro qu’on appelle
l’indice de l’élément.

Un dictionnaire en Python va aussi permettre de rassembler des


éléments mais ceux-ci seront identifiés par une clé. On peut faire
l’analogie avec un dictionnaire de français où on accède à une définition
avec un mot.

Contrairement aux listes qui sont délimitées par des crochets, on utilise
des accolades pour les dictionnaires.

mon_dictionnaire = {"voiture": "véhicule à quatre roues", "vélo":


"véhicule à deux roues"}
Un élément a été défini ci-dessus dans le dictionnaire en précisant
une clé au moyen d’une chaîne de caractères suivie de : puis de
la valeur associée

clé: valeur

On accède à une valeur du dictionnaire en utilisant la clé entourée par


des crochets avec la syntaxe suivante :

mon_dictionnaire["voiture"]
'véhicule à quatre roues'

1. Comment construire une entrée dans un dictionnaire ?


Il est très facile d’ajouter un élément à un dictionnaire. Il suffit d’affecter une valeur pour la
nouvelle clé.

mon_dictionnaire["tricycle"] = "véhicule à trois roues"


mon_dictionnaire

{'voiture': 'véhicule à quatre roues',


'vélo': 'véhicule à deux roues',
'tricycle': 'véhicule à trois roues'}

Le type d’un dictionnaire est dict.

type(mon_dictionnaire)
dict

Il est aussi possible d’utiliser des valeurs d’autres types.

Voici un exemple où les valeurs sont des entiers.

Alouani khouloud
Chapitre 0 : Rappel général
28

nombre_de_roues = {"voiture": 4, "vélo": 2}

type(nombre_de_roues)

dict

nombre_de_roues["vélo"]
2

2. Comment créer un dictionnaire ?


Nous avons vu ci-dessous qu’il était possible de créer un dictionnaire avec
des accolades qui entourent les éléments. Une autre approche possible consiste à
créer un dictionnaire vide et à ajouter les éléments au fur et à mesure.

3. Comment parcourir un dictionnaire ?


On utilise items() .

Exemple pour une boucle for avec un indice i

Autre exemple pour une boucle for avec deux indices : cle et
valeur

Alouani khouloud
Chapitre 0 : Rappel général
29

VII. Fonctions en Python (séance 6)


Nous avons déjà rencontré diverses fonctions
prédéfinies : print() , input() , range() , len() .

Alouani khouloud
Chapitre 0 : Rappel général
30

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. Cette approche est également intéressante si la personne qui
définit la fonction est différente de celle qui l’utilise. Par exemple, nous
avons déjà utilisé la fonction print() qui avait été définie par quelqu’un
d’autre.

1. Définition d’une fonction - def


Syntaxe

La syntaxe Python pour la définition d’une fonction est la suivante :

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

Alouani khouloud
Chapitre 0 : Rappel général
31

En entrant ces quelques lignes, nous avons défini une fonction très simple qui
compte jusqu’à 2. Notez bien les parenthèses, les deux-points, et
l’indentation du bloc d’instructions qui suit la ligne d’en-tête (c’est ce bloc
d’instructions qui constitue le corps de la fonction proprement dite).
Après la définition de la fonction, on trouve le programme principal qui
débute par l’instruction print("bonjour"). Il y a ensuite au sein du programme
principal, l’appel de la fonction grâce à compteur3().
Il est également possible de sauvegarder ce programme en tant que script au
sein d’IDLE. Après avoir exécuté ce script, pour utiliser à nouveau la
fonction que nous venons de définir, il suffit de l’appeler par son nom au
niveau du shell. Ainsi :

Alouani khouloud
Chapitre 0 : Rappel général
32

Nous pouvons maintenant réutiliser cette fonction à plusieurs reprises, autant


de fois que nous le souhaitons.
Nous pouvons également l’incorporer dans la définition d’une autre fonction.
Exemple de fonction qui appelle une autre fonction

Une première fonction peut donc appeler une deuxième fonction, qui elle-
même en appelle une troisième, etc.
Créer une nouvelle fonction offre l’opportunité de donner un nom à tout un
ensemble d’instructions. De cette manière, on peut simplifier le corps
principal d’un programme, en dissimulant un algorithme secondaire
complexe sous une commande unique, à laquelle on peut donner un nom
explicite.
Une fonction est donc en quelque sorte une nouvelle instruction
personnalisée, qu’il est possible d’ajouter librement à notre langage de
programmation.

Alouani khouloud
Chapitre 0 : Rappel général
33

2. Fonction avec paramètre

 Utilisation d’une variable comme argument


L’argument que nous utilisons dans l’appel d’une fonction peut être une
variable.

Exemple

Affichage après exécution :

Alouani khouloud
Chapitre 0 : Rappel général
34

Avertissement

Dans l’exemple ci-dessus, l’argument que nous passons à la


fonction compteur() est le contenu de la variable a . A l’intérieur de la
fonction, cet argument est affecté au paramètre stop , qui est une tout
autre variable.

Notez donc bien dès à présent que :

 Le nom d’une variable que nous passons comme argument n’a rien
à voir avec le nom du paramètre correspondant dans la fonction.
 Ces noms peuvent être identiques si vous le voulez, mais vous
devez bien comprendre qu’ils ne désignent pas la même chose (en
dépit du fait qu’ils puissent contenir une valeur identique).

 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.

Alouani khouloud
Chapitre 0 : Rappel général
35

Note

 Pour définir une fonction avec plusieurs paramètres, il suffit d’inclure


ceux-ci entre les parenthèses qui suivent le nom de la fonction, en
les séparant à l’aide de virgules.
 Lors de l’appel de la fonction, les arguments utilisés doivent être
fournis dans le même ordre que celui des paramètres
correspondants (en les séparant eux aussi à l’aide de virgules). Le
premier argument sera affecté au premier paramètre, le second
argument sera affecté au second paramètre, et ainsi de suite.

3. Variables locales, variables globales


Lorsqu’une fonction est appelée, Python réserve pour elle (dans la
mémoire de l’ordinateur) un espace de noms. Cet espace de
noms local à la fonction est à distinguer de l’espace de noms global où
se trouvait les variables du programme principal. Dans l’espace de noms
local, nous aurons des variables qui ne sont accessibles qu’au sein de la
fonction. C’est par exemple le cas des variables start , stop , step et i dans
l’exemple précédent.

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.

Les contenus des variables locales sont stockés dans l’espace de noms
local qui est inaccessible depuis l’extérieur de la fonction.

Les variables définies à l’extérieur d’une fonction sont des variables


globales. Leur contenu est « visible » de l’intérieur d’une fonction, mais la
fonction ne peut pas le modifier.

Exemple

Alouani khouloud
Chapitre 0 : Rappel général
36

Affichage après exécution :

 Utilisation d’une variable globale - global


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 .

Affichage après exécution :

 « Vraies » fonctions et procédures


Pour les puristes, les fonctions que nous avons décrites jusqu’à présent ne
sont pas tout à fait des fonctions au sens strict, mais plus exactement des
procédures. Une « vraie » fonction (au sens strict) doit en effet renvoyer

Alouani khouloud
Chapitre 0 : Rappel général
37

une valeur lorsqu’elle se termine. Une « vraie » fonction peut s’utiliser à la


droite du signe égale dans des expressions telles que y = sin(a). On
comprend aisément que dans cette expression, la fonction sin() renvoie
une valeur (le sinus de l’argument) qui est directement affectée à la
variable y.

Voici un exemple extrêmement simple:

4. Valeurs par défaut pour les paramètres


Dans la définition d’une fonction, il est possible de définir un argument par
défaut pour chacun des paramètres. On obtient ainsi une fonction qui peut être
appelée avec une partie seulement des arguments attendus.

Lorsque l’on appelle cette fonction en ne lui fournissant que le premier


argument, le second reçoit tout de même une valeur par défaut. Si l’on fournit
les deux arguments, la valeur par défaut pour le deuxième est tout simplement
ignorée.

5. Arguments avec étiquettes

Alouani khouloud
Chapitre 0 : Rappel général
38

Dans la plupart des langages de programmation, les arguments que l’on


fournit lors de l’appel d’une fonction doivent être fournis exactement dans
le même ordre que celui des paramètres qui leur correspondent dans la
définition de la fonction.

Python autorise cependant une souplesse beaucoup plus grande. Si les


paramètres annoncés dans la définition de la fonction ont reçu chacun une
valeur par défaut, sous la forme déjà décrite ci-dessus, on peut faire appel
à la fonction en fournissant les arguments correspondants dans
n’importe quel ordre, à la condition de désigner nommément les
paramètres correspondants.

Exemple :

6. Utilisation des fonctions dans un script


Pour cette première approche des fonctions, nous n’avons utilisé jusqu’ici que
des fonctions dans des scripts et pas de programme principal dans le script.
Veuillez donc essayer vous-même le petit programme ci-dessous, lequel calcule
le volume d’une sphère a l’aide de la formule :

Alouani khouloud
Chapitre 0 : Rappel général
39

A bien y regarder, ce programme comporte deux parties :


 les deux fonctions cube() et volume_sphere()
 le corps principal du programme.
Dans le corps principal du programme, il y a un appel de la fonction
volume_sphere().
A l’intérieur de la fonction volume_sphere(), il y a un appel de la fonction
cube().
Notez bien que les deux parties du programme ont été disposées dans un certain
ordre :
 d’abord la définition des fonctions,
 et ensuite le corps principal du programme.
Cette disposition est nécessaire, parce que l’interpréteur exécute les lignes
d’instructions du programme l’une après l’autre, dans l’ordre où elles
apparaissent dans le code source. Dans le script, la définition des fonctions doit
donc précéder leur utilisation.
Pour vous en convaincre, intervertissez cet ordre (en plaçant par exemple le
corps principal du programme au début), et prenez note du type de message
d’erreur qui est affiché lorsque vous essayez d’exécuter le script ainsi modifié.
En fait, le corps principal d’un programme Python constitue lui-même une entité
un peu particulière, qui est toujours reconnue dans le fonctionnement interne de
l’interpréteur sous le nom réservé __main__ (le mot « main » signifie « principal

Alouani khouloud
Chapitre 0 : Rappel général
40

», en anglais. Il est encadré par des caractères « souligné » en double, pour éviter
toute confusion avec d’autres symboles). L’exécution d’un script commence
toujours avec la première instruction de cette entité __main__, où qu’elle puisse
se trouver dans le listing. Les instructions qui suivent sont alors exécutées l’une
après l’autre, dans l’ordre, jusqu’au premier appel de fonction. Un appel de
fonction est comme un détour dans le flux de l’exécution : au lieu de passer à
l’instruction suivante, l’interpréteur exécute la fonction appelée, puis revient au
programme appelant pour continuer le travail interrompu. Pour que ce
mécanisme puisse fonctionner, il faut que l’interpréteur ait pu lire la définition
de la fonction avant l’entité __main__, et celle-ci sera donc placée en général à
la fin du script.
Dans notre exemple, l’entité __main__ appelle une première fonction qui elle-
même en appelle une deuxième. Cette situation est très fréquente en
programmation. Si vous voulez comprendre correctement ce qui se passe dans
un programme, vous devez donc apprendre à lire un script, non pas de la
première à la dernière ligne, mais plutôt en suivant un cheminement analogue à
ce qui se passe lors de l’exécution de ce script. Cela signifie concrètement que
vous devrez souvent analyser un script en commençant par ses dernières lignes !

Alouani khouloud

Vous aimerez peut-être aussi