Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
Présentation rapide de Python
F. Kany. ISEN-Brest & La Croix-Rouge
Présentation du langage
Développé depuis 1989 par Guido van Rossum
Langage
Portable (parce qu’interprété)GratuitDynamiqueExtensible (nombreuses librairies externes)En évolution permanente
Ressources documentaires
Livres
"Apprendre à programmer avec Python 3", GérardSwinnen, Eyrolles"A primer on Scientific Programming with Python", 2ndedition, Hans Petter Langtangen, Springer
Web :
Page officielle de Python : http ://www.python.org/Un tutoriel :http ://www.siteduzero.com/informatique/tutoriels/apprenez-a-programmer-en-python
Plan du cours
Variables et types de base
Blocs d’instructions et structures de contrôles
Listes et parcours de listes
Fonctions
Premiers pas en Python
MacBook-Pro:~ user$ python3Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 01:25:11)[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwinType "help", "copyright", "credits" or "license" for moreinformation.
>>> 5+38>>> 2/50.4>>> 2//50>>> print("Hello World")Hello World
Lancement del’interpréteur
Calculnumérique
Affichaged’une chaînede caractères
Types de données
La valeur d’une donnée est d’un certain type (inféré)
Types de base communément utilisés :
entier (int)réel (float)chaîne de caractères (string)booléen (bool)
Types "évolués"
listes, tuples, dictionnaires. . .
Variables et types de données
Une variable stocke une valeur d’un certain type
En Python :
Typage dynamique des données (le type est défini lors del’affection d’une valeur à la variable)Risque d’erreurs ! (savoir ce qu’on manipule)S’oppose au typage statique (défini dans le programme)
>>> a = 5>>> a =’Essai’
Affectation à la variable a de l’entier 5Affectation à la variable a de la chaîne ’Essai’a change de type à la volée !
Mémoire : analogie
Mémoire ' ensemble de "tiroirs"
Chaque "tiroir" stocke une donnée
Une donnée est représentée en programmation par une variable
Mémoire et référence
Une référence est une adresse d’une case mémoire
Si on suit l’analogie précédente, une référence est le numérod’un tiroir dans laquelle se trouve une donnée
En Python, toute variable que l’on manipule est une référence(i.e. l’adresse de la donnée, pas la donnée elle-même)
Variables et références
>>> nb=8>>> txt = "Hello World">>> pi = 3.14159
Affectations
Variable (référence i.e. pointeur)
Valeur en mémoire
nb
8
txt
Hello World
pi
3.14159
>>> nb8>>> txt’Hello World?’>>> print(pi)3.14159>>>
Affichage
Obtention du type d’une variable
Fonction type(. . .)
>>> a = 5>>> type(a)<class ’int’>>>> b=6.4>>> type(b)<class ’float’>>>> s=’Essai’>>> type(s)<class ’str’>
<class ...> car orienté objet (définition d’un type)
Affectations multiples
Une valeur affectée simultanément à plusieurs variables
>>> x = y = 7>>> x7>>> y7
Affectations parallèles à plusieurs variables
>>> a,b = 4, 8.33>>> a4>>> b8.33
Application : a,b = b,a(échange de 2 variables sans passer par une 3ème)
Affectation et références
>>> a=1>>> b=a #nouvelle référence sur la même valeur>>> a=2 #b n’est pas modifié>>> print(a,b)2 1
Références
Valeurs en mémoire
a
1
Attention :
>>> a=1500; b=1500>>> a==bTrue>>> a is bFalse#mais a=b=1500; a is b #True
Mais :
>>> a=2; b=2>>> a is bTrue#les entiers de -5 à +256 sont stockés#dans une zone mémoire réservée !
Affectation et références
>>> a=1>>> b=a #nouvelle référence sur la même valeur>>> a=2 #b n’est pas modifié>>> print(a,b)2 1
Références
Valeurs en mémoire
a
1
b
Attention :
>>> a=1500; b=1500>>> a==bTrue>>> a is bFalse#mais a=b=1500; a is b #True
Mais :
>>> a=2; b=2>>> a is bTrue#les entiers de -5 à +256 sont stockés#dans une zone mémoire réservée !
Affectation et références
>>> a=1>>> b=a #nouvelle référence sur la même valeur>>> a=2 #b n’est pas modifié>>> print(a,b)2 1
Références
Valeurs en mémoire
a
1
b
2
Attention :
>>> a=1500; b=1500>>> a==bTrue>>> a is bFalse#mais a=b=1500; a is b #True
Mais :
>>> a=2; b=2>>> a is bTrue#les entiers de -5 à +256 sont stockés#dans une zone mémoire réservée !
Données numériques et opérateurs arithmétiques
Opérateurs arithmétiques : +, -, /, *, // (division entière), %(modulo)
Exemples d’expressions :
>>> largeur = 20>>> hauteur = 5 * 9.3>>> print(largeur * hauteur)930.0>>> a,b = 7.3,12>>> y = 3*a + b/5>>> y24.299999999999997>>>
Chaînes de caractères (1)
Chaine de caractères = suite de caractères quelconques
Délimité par des apostrophes (quote) ou des guillemets(double quote)Pas de type char (uniquement str)
>>> phrase1 = ’les oeufs durs’>>> phrase2 = ’"Oui", répondit-il,’>>> phrase3 = "j’aime bien">>> print(phrase2, phrase3, phrase1)"Oui", répondit-il, j’aime bien les oeufs durs>>>
Chaines de caractères (2)
Caractères spéciaux :
Précédés du ’\’ : exemple \n (retour à la ligne)\’ et \" permettent de représenter ’ et "
Pour insérer \, " et ’ dans la chaîne : utilisation du triple quote """
>>> phrase4="""Ceci est une "chaine" de \n caractères""">>> print(phrase4)Ceci est une "chaine" decaractères
Accès aux caractères d’une chaine
Chaine = séquence d’éléments (ordonnés)
Chaque caractère peut être désigné par sa place dans laséquence (un index compris entre 0 et taille-1)
>>> ch="Eric">>> print(ch[0], ch[2], ch[3])E i c
Attention : accès en lecture seulement
une chaine de caractères est immutable (i.e. non modifiable)
Opérations sur des chaînes
Concaténation : ’+’ (surcharge d’opérateur)
>>> ch1="Hello">>> ch2=" World">>> ch3=ch1+ch2>>> print(ch3)Hello World
Longueur d’une chaîne : len(. . .)
>>> print(len(ch1))5>>> print(len(ch3))11
Booléens
Valeurs booléennes : True et False
Opérations sur les variables booléennes : or, and, . . .
Attention : a XOR b s’écrit bool(a)!= bool(b)
Dans la pratique :
True vaut 1 et False vaut 0Toute valeur différente de 0 vaut vrai0 vaut fauxEx: a=5; if a: #True
Opérateurs de comparaison
Sur les variables comparables : == (égalité des valeurs), <, <=,>=, >, != (différent), is (égalité des références)
>>> a = 5>>> b = 2>>> b1 = (a == b)>>> b2 = (a != b)>>> b1False>>> b2True
>>> a = ’Essai’>>> b = ’Essai’>>> b1 = (a == b)>>> b1True>>> a = 10>>> b = ’10’>>> b1 = (a == b)>>> b1 #car type !=False
Plan du cours
Variables et types de base
Blocs d’instructions et structures de contrôles
Listes et parcours de listes
Fonctions
De la ligne de commande au programme interprété
Ligne de commande (python)
>>> largeur = 20>>> hauteur = 5 * 9.3>>> print(largeur * hauteur)930.0>>> a,b=7.3,12>>> y=3*a+b/5>>> y24.299999999999997>>>
Fichier.py
largeur = 20hauteur = 5 * 9.3print(largeur * hauteur)a,b=7.3,12y=3*a+b/5print(y)
Sous IDLE :File/New WindowÉcrire le programmeFile/Save/Run/Run Module (F5)Sous Spyder :Fenêtre de gauche (Editeur)Ecrire le programmeRun (F5) -> Exécuter dansenvironnement dédié
De la ligne de commande au programme interprété
⇓⇓
Exécution séquentielle ⇓⇓⇓
Fichier.py
largeur = 20hauteur = 5 * 9.3print(largeur * hauteur)a,b=7.3,12y=3*a+b/5print(y)
Exécution du programme
MacBook-Pro:~ user$ python3Fichier.py930.024.299999999999997
Instructions de contrôle
Par défaut, lesinstructions exécutées enséquence
Besoins
Sauter un grouped’instructions (souscertaines conditions)Répéter un grouped’instructions
⇒ Instructions de contrôle
i1 ; ⇓i2 ; ⇓i3 ; ⇓i4 ; ⇓i5 ; ⇓
i1 ; ⇓i2 ; ⇓i3 ; ⇓ ← ↑i4 ; ⇓ 5 fois ↑i5 ; ⇓ → ↑i6 ; ⇓
Exécution conditionnelle
Choix d’un bloc d’instruction
largeur = 20hauteur = 5 * 9.3if (largeur == hauteur):
print("C’est un carré") # si la condition est vraieelse:
print("C’est un rectangle") # si la condition est fausse
L’indentation est codante !
Exécution conditionnelle : forme générale
if condition1:Bloc d’instructions # si condition1 est vraieinstruction1instruction2instruction3...instructionN
elif condition2:Bloc d’instructions # si condition2 est vraie
elif condition3:Bloc d’instructions # si condition3 est vraie
else:Bloc d’instructions
Exécution conditionnelle : exemple
Exemple d’utilisation
a = 0if a>0:
print("a est positif")elif a<0:
print("a est négatif")else:
print("a est nul")
Ne pas oublier les indentations
Boucle : tant que
Exécution d’un bloc d’instructions tant qu’une condition estvraie :
a=0while a<4: #tant que
a=a+1 #Bloc d’instructionsprint(a) #Bloc d’instructions
Résultat de l’exécution
MacBook-Pro:~ user$ python3 Fichier.py1234
Boucle tant que : forme générale
while condition:[indentation] Bloc d’instructions
AttentionIl n’y a pas d’équivalent de :
do{ Bloc d’instructions }
until condition
exemple :a = 0;do
{print(a);a=a+1;}
until (a>=3);
Il faut coder : a = 0test = Falsewhile not test:
print(a)a=a+1test = (a>=3)
Composition des instructions de contrôle
a=1while a<10:
if a%2==0:a=a+2
else:a=a-1
print(a)_______________________________________MacBook-Pro:~ user$ python3 Fichier.py0246810
Premier programme : calcul des termes d’une suite
Calcul de la suite de Fibonacci U0 = 0U1 = 1
Un+2 = Un+1 + Un
Ecrire les 15 premiers termes de la suite
Deuxième programme : manipulation d’une chaine
Vérifier qu’une chaîne de caractères est un palindrome
Exemple de palindrome : radar
On initialisera une variable contenant la chaîne de caractèresdans le programme
On utilisera une boucle tant que
Plan du cours
Variables et types de base
Blocs d’instructions et structures de contrôles
Listes et parcours de listes
Fonctions
Les listes
Comme les chaînes, les listes sont des séquences, sauf que leslistes peuvent contenir n’importe quel type d’objet (listes =tableaux dynamiques)
Contrairement aux chaînes, les listes sont modifiables
Chaque objet d’une liste est accessible par l’intermédiaire d’unindex (un entier qui indique l’emplacement de l’objet dans laséquence)
Définition et accès aux éléments d’une liste
Définition et initialisation d’une liste
>>> nombres = [5, 38, 10, 25]>>> print(nombres)[5, 38, 10, 25]
Accès aux éléments d’une liste (slicing)
>>> print(nombres[2]) # indice 210>>> print(nombres[1:3]) # indices 1 à 2 inclus# [borne inf inclus: borne sup non inclus][38, 10]>>> print(nombres[2:]) # indices 2 à la fin[10, 25]>>> print(nombres[:2]) # du début jusqu’à l’indice 1[5, 38]>>> print(nombres[-1]) # le premier en partant de la fin25
Modification d’une liste (1)
Modification d’un élément d’une liste
>>> nombres = [5, 38, 10, 25]>>> nombres[0] = 17>>> nombres[17, 38, 10, 25]
Effacer un ou plusieurs éléments d’une liste
>>> del nombres[2]>>> nombres[17, 38, 25]>>> del nombres[1:2]>>> nombres[17, 25]
Modification d’une liste (2)
Modifier une plage de valeurs
>>> nombres = [5, 38, 10, 25]>>> nombres[1:3] = [40, 30, 20] # remplacement d’une partie>>> nombres[5, 40, 30, 20, 25]>>> nombres[2:2] = [-5] # insertion d’un élément à l’indice 2>>> nombres[5, 40, -5, 30, 20, 25]
Explication : Python numérote les séparations entre les éléments d’une liste(i.e. les poteaux) et non les éléments d’une liste (i.e. les intervalles)
a b c d e
0 1 2 3 4 5
-1-2-3-4-5
Méthodes applicables aux listes
Notation pointée (liste est une variable de type list) :
liste.sort() : trier une liste
liste.append(element) : ajouter un élément en fin de liste
liste.reverse() : inverser l’ordre des éléments de la liste
liste.index(element) : trouver l’index d’un élément
liste.remove(element) : enlever un élément
Exercice sur les listes
Soit la liste suivante :
ecoles = [’Polytechnique’, ’Centrale’, ’Supelec’]
Ecrire un programme qui
Ajoute deux écoles en fin de listeAffiche tous les éléments de la liste et le nombre decaractères qu’ils comportent
Indice : on utilisera la fonction len(...) sur les listes et leschaînes !
Création d’une liste d’entiers
Fonction range(...)
Crée une séquence d’entiersPeut être transformée en liste avec listlist(range(10)) crée une liste des 10 premiers entiers(de 0 à 9)
3 utilisations possibles :
range(N) : séquence des N premiers entiers (de 0 à N-1)range(N,M) : séquence des entiers compris entre N(inclus) et M (non inclus)range(N,M,P) : séquence des entiers compris entre N(inclus) et M (non inclus) avec un pas de P
Parcours des éléments d’une liste (1)
Jusqu’à présent : utilisation d’une boucle tant que quiparcourait tous les indices présents dans la liste
Autre solution : la boucle for
nombres = [5, 38, 10, 25]for i in nombres:
print(i, end = ’ ’)
i parcourt toute la liste nombres et la boucle affiche tous leséléments séparés par un espace
Parcours des éléments d’une liste (2)
Ceci fonctionne quel que soit le type des éléments dans la listeparcourue
mots = [’Ceci’, ’est’, ’un’, ’essai’]for i in mots:
print(i, end = ’ ’)
Affiche les 4 mots de la liste
A noter : les éléments dans la liste ne sont pas tous forcémentdu même type ! ! !
Retour sur palindrome
Parcours d’une chaine en utilisant for, range et len
string = "radar"pal = Truefor i in range(len(string)//2): #Attention pas optimisé
pal = pal and (string[i]==string[-1-i])if pal:
print(string, "est un palindrome")else:
print(string, "n’est pas un palindrome")
Attention : Copie d’une liste
Soit le code suivant :
>>> mots = [’Ceci’, ’est’, ’un’, ’essai’]>>> phrase = mots # on a l’impression de copier mots dans phrase>>> phrase[’Ceci’, ’est’, ’un’, ’essai’]>>> mots[’Ceci’, ’est’, ’un’, ’essai’] # même contenu pour les 2 listes>>> phrase[0] = ’Coucou’ # on modifie phrase>>> phrase[’Coucou’, ’est’, ’un’, ’essai’]>>> mots[’Coucou’, ’est’, ’un’, ’essai’] # mots est modifié aussi !!!>>>
Copie d’une liste : explication
Soit le code :
>>> mots = [’Ceci’, ’est’, ’un’, ’essai’]>>> phrase = mots # on a l’impression de copier mots dans phrase#en fait on copie la référence et non la valeur
On crée en fait deux références vers la même liste
mots
phrase
mots
phrase
Ceci est un essai
Coucou est un essai
phrase[0]="Coucou"
Les tuples
Un tuple est un n-uplet
Un tuple n’est pas modifiable (pas de méthode de modificationou d’écriture dans le tuple)
C’est une liste figée
Utilisation de parenthèses à la place des crochets d’une liste (enfait, c’est la virgule qui crée le tuple, pas la parenthèse)
>>> t=(1,2,3,4)>>> t(1, 2, 3, 4)>>> t[0]1>>> t[1:3](2, 3)
Du tuple à la liste et vice-versa
Transformation d’un tuple en liste
>>> t=(1,2,3,4)>>> l=list(t)>>> l[1, 2, 3, 4]
Transformation d’une liste en tuple
>>> l=[1,2,3,4]>>> t=tuple(l)>>> t(1, 2, 3, 4)
Retour sur les affectations multiples
>>>> x,y=1,2>>> x1>>> y2>>> (x,y)=(3,4)>>> x3>>> y4>>> t=1,2>>> t(1, 2)
Les notations 1,2 ou x,y représentent en fait un tuple(car c’est la virgule qui fait le tuple)
Exercice : copie d’une liste
Créer une liste A contenant des entiers
Effectuez une vraie copie de cette liste dans une nouvelle liste B
Indice : créer une liste vide et lui ajouter les éléments de A
Modifier A
Vérifier que B n’est pas modifié
NB : la fonction list réalise cette opération
Ensemble (set) et manipulation
Collection non ordonnée d’éléments
>>> s1={1,2,3,4}>>> s2={1,4,5}>>> s1.intersection(s2) # appel de méthodes (sera vu dans la... # partie programmation objet){1, 4}>>> s1.union(s2){1, 2, 3, 4, 5}>>> 3 in s1True>>> 3 in s2False>>> s1.add(6)>>> s1{1, 2, 3, 4, 6}
Plan du cours
Variables et types de base
Blocs d’instructions et structures de contrôles
Listes et parcours de listes
Fonctions
Intérêt des fonctions
Dans un programme, on réécrit souvent le même code plusieursfois
Idée : regrouper dans une entité du code qu’on veut réutiliser etqui a un sens en lui-même
Solution : définition de fonction(Il existe une autre approche : l’approche objet)
Définition d’une fonction
def nomDeLaFonction(liste des paramètres):...bloc d’instructions...
La définition commence par le mot-clef def
La fonction a un nom
Elle peut utiliser des données pour s’exécuter : ses paramètres(sans préciser les types !)
L’appel de cette fonction déclenche l’exécution du blocd’instructions qui la compose
Fonction simple sans paramètre
def affiche():n=1while n<7:
print(n, 2*n)n=n+1
affiche() # appel de la fonction affiche_______________________________________MacBook-Pro:~ user$ python3 Fichier5.py1 22 43 64 85 106 12
Fonction simple avec paramètre
def affiche(base):n=basewhile n<7:
print(n, 2*n)n=n+1
affiche(3) # appel de la fonction affiche_______________________________________MacBook-Pro:~ user$ python3 Fichier5.py3 64 85 106 12
Appel d’une fonction simple avec un paramètrevariable
def affiche(base):n=basewhile n<7:
print(n, 2*n)n=n+1
b=3affiche(b) # appel de la fonction affiche_______________________________________MacBook-Pro:~ user$ python3 Fichier5.py3 64 85 106 12
Fonction simple avec plusieurs paramètres
def affiche(base,limite):n=basewhile n<limite:
print(n, 2*n)n=n+1
affiche(3,7) # appel de la fonction affiche# (paramètre dans le bon ordre)_______________________________________MacBook-Pro:~ user$ python3 Fichier5.py3 64 85 106 12
Valeurs par défaut des paramètres
def affiche(base=3,limite=7):#valeur par défaut des paramètres
n=basewhile n<limite:
print(n, 2*n)n=n+1
affiche() # ou affiche(4) ou affiche(5,8)
Les paramètres définis par défaut sont optionnels à l’appel de lafonction (si pas spécifiés, valeur par défaut)
On peut appeler la fonction avec les paramètres dans un ordredifférent de celui défini en spécifiant les étiquettes(ex : affiche(limite=8,base=4))
Procédures et fonctions
Les fonctions que nous avons présentées ne retournent aucunevaleur à la fin de leur exécution
Dans de nombreux langages, on appelle ce type de fonctionsdes procédures
Dans la pratique, une fonction peut renvoyer une ou plusieursvaleurs
Parallèle avec une fonction mathématique
Maths :
carre : Z→ Zx → x × x
Python
def carre (x):return x*x
Pas de domaine de définition !
Définition et appel d’une fonction avec retour
def carre(x):return x*x
b = 3print(carre(b))y = carre(5)print(y)_______________________________________MacBook-Pro:~ user$ python3 Fichier5.py925
Fonctions avec retours multiples
def calcul(a,b):return a+b, a-b
x,y=calcul(5,3)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 Fichier5.py8 2
Mode de passage de paramètres
Dans la plupart des langages : 2 modes de passage deparamètres
Par valeur : dans la fonction on travaille sur une copie desparamètres (copie du contenu)Par référence : dans la fonction on travaille directement surle paramètre passé en argument (on passe lepointeur/l’adresse ; effet de bord)
Et en Python ?
Python et passage de paramètres
Deux explications complémentaires
1 Passage par valeur d’une référence sur l’argumentTravail sur la copie d’une référence
2 Suivant le type de l’argumentimmutable => pas de modification possible dans la fonctionTypes de base (int, float, string,tuple)mutable => modification possible dans la fonctionlistes, dictionnaires, objets
Exemple de passages de paramètres (1)
def maFonction(a,b):a,b = b,aprint(a,b)
x,y=1,2print(x,y)maFonction(x,y)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 params.py1 22 11 2
x y
1 2
a et b sont des variables locales à maFonction
Exemple de passages de paramètres (1)
def maFonction(a,b):a,b = b,aprint(a,b)
x,y=1,2print(x,y)maFonction(x,y)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 params.py1 22 11 2
x y
1 2
a b
Copie des références
x et y dans a et b
a et b sont des variables locales à maFonction
Exemple de passages de paramètres (1)
def maFonction(a,b):a,b = b,aprint(a,b)
x,y=1,2print(x,y)maFonction(x,y)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 params.py1 22 11 2
x y
1 2
a b
a et b sont des variables locales à maFonction
Exemple de passages de paramètres (1)
def maFonction(a,b):a,b = b,aprint(a,b)
x,y=1,2print(x,y)maFonction(x,y)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 params.py1 22 11 2
x y
1 2
a b échange
des ref.
a et b sont des variables locales à maFonction
Exemple de passages de paramètres (2)
def maFonction(a,b):a,b = b,aprint(a,b)
x,y=[1,2],[3,4]print(x,y)maFonction(x,y)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 params.py[1, 2] [3, 4][3, 4] [1, 2][1, 2] [3, 4]
Même chose que le programme précédent(avant avec des entiers, ici avec des listes)
Exemple de passages de paramètres (3)
def maFonction(a,b):a[0],b[0] = b[0],a[0]print(a,b)
x,y=[1,2],[3,4]print(x,y)maFonction(x,y)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 params.py[1, 2] [3, 4][3, 2] [1, 4][3, 2] [1, 4]
x y
1|2 3|4
Ici listes mutables : on a modifié les listes
Exemple de passages de paramètres (3)
def maFonction(a,b):a[0],b[0] = b[0],a[0]print(a,b)
x,y=[1,2],[3,4]print(x,y)maFonction(x,y)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 params.py[1, 2] [3, 4][3, 2] [1, 4][3, 2] [1, 4]
x y
1|2 3|4
a b
Copie des références
x et y dans a et b
Ici listes mutables : on a modifié les listes
Exemple de passages de paramètres (3)
def maFonction(a,b):a[0],b[0] = b[0],a[0]print(a,b)
x,y=[1,2],[3,4]print(x,y)maFonction(x,y)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 params.py[1, 2] [3, 4][3, 2] [1, 4][3, 2] [1, 4]
x y
1|2 3|4
a b
Copie des références
x et y dans a et b
Ici listes mutables : on a modifié les listes
Exemple de passages de paramètres (3)
def maFonction(a,b):a[0],b[0] = b[0],a[0]print(a,b)
x,y=[1,2],[3,4]print(x,y)maFonction(x,y)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 params.py[1, 2] [3, 4][3, 2] [1, 4][3, 2] [1, 4]
x y
3|2 1|4
a b
Modification
des listes
Ici listes mutables : on a modifié les listes
Exemple de passages de paramètres (4)
def maFonction(a,b):a[0],b[0] = b[0],a[0]print(a,b)
x,y=(1,2),(3,4)print(x,y)maFonction(x,y)print(x,y)
MacBook-Pro:~ user$ python3 params.py(1, 2) (3, 4)Traceback (most recent call last):
File "params.py", line 7, in <module>maFonction(x,y)
File "params.py", line 2, in maFonctiona[0],b[0] = b[0],a[0]
TypeError: ’tuple’ object does not support item assignment
x y
1|2 3|4
a b
Copie des références
x et y dans a et b
Impossible de
modifier les
tuples
Variables locales et globales (1)
Les variables définies en dehors des fonctions sont globales
Elles sont lisiblesMais elles ne peuvent pas, par défaut, être modifiées dansune fonctionSi on veut les modifier, utilisation du mot-clef global
Les variables définies (affectées) dans une fonction sont localesà cette fonction, et ne sont pas visibles à l’extérieur de la fonction
Variables locales et globales (2)
def maFonction():p = 20 # variable localeglobal q # q variable globale modifiableq = 50 # modification de qprint("2-",n,p,q) # n globale lisible
n=5p=10q=30print("1-",n,p,q)maFonction()print("3-",n,p,q)
MacBook-Pro:~ user$ python3 Fichier6.py
1- 5 10 30 # valeurs initiales2- 5 20 50 # n lisible, p local, q global3- 5 10 50 # on ne voit plus p local, q a bien été modifié
Exercice sur les fonctions
Ecrire deux fonctions qui calculent
l’approximation de la dérivée d’une fonction en un point(fonction et point passés en paramètres)l’approximation de l’intégrale d’une fonction entre deuxpoints (fonction et points passés en paramètres) par laméthode des rectangles
Ecrire un programme qui utilise ces deux fonctions pour vérifierleur bon fonctionnement