0% ont trouvé ce document utile (0 vote)
28 vues27 pages

CM5 Python

Le document traite des types mutables et immutables en Python, en expliquant les différences entre eux, ainsi que l'impact de ces types sur les variables et les fonctions. Il aborde également la portée des variables, l'utilisation de variables globales, et présente des exemples de fonctions, y compris l'utilisation d'expressions lambda. Enfin, il propose des exercices pratiques pour renforcer la compréhension des concepts abordés.

Transféré par

guillaume.garnier826
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 PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
28 vues27 pages

CM5 Python

Le document traite des types mutables et immutables en Python, en expliquant les différences entre eux, ainsi que l'impact de ces types sur les variables et les fonctions. Il aborde également la portée des variables, l'utilisation de variables globales, et présente des exemples de fonctions, y compris l'utilisation d'expressions lambda. Enfin, il propose des exercices pratiques pour renforcer la compréhension des concepts abordés.

Transféré par

guillaume.garnier826
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 PDF, TXT ou lisez en ligne sur Scribd

Fondements informatiques I

Cours 5: Types mutables et immutables


Fonctions (suite et fin)

Sorina Ionica [Link]@[Link]

Sandrine Vial [Link]@[Link]

1
Types mutables et immutables

En Python, on distingue deux types d’objets:

1. objets immutables : qu’on ne peut pas changer


▶ entiers, flottants
▶ tuples
▶ chaînes de caractères

x=3 x 3
x+=1

2
Types mutables et immutables

En Python, on distingue deux types d’objets:

1. objets immutables : qu’on ne peut pas changer


▶ entiers, flottants
▶ tuples
▶ chaînes de caractères

x=3 x 3
x+=1

Après incrémentation:

x 3

2
Variables mutables et immutables
2. objets mutables: dont on peut modifier le contenu
▶ les listes
▶ les ensembles (sets)
▶ les dictionnaires (qu’on verra plus tard)

liste 1,2,3
liste=[1,2,3]
liste[0]=5

3
Variables mutables et immutables
2. objets mutables: dont on peut modifier le contenu
▶ les listes
▶ les ensembles (sets)
▶ les dictionnaires (qu’on verra plus tard)

liste 1,2,3
liste=[1,2,3]
liste[0]=5
Après modification:

liste 5,1,3

3
Questions

Que se passe-t-il à l’exécution?

mon_tuple=(1,2,3)
mon_tuple[0]=5

chaine="hello world"
chaine[0]=’H’

4
Questions

Ecrivez un programme qui prend une chaîne de caractères et affiche la chaîne avec
la première lettre de chaque mot en majuscule.

5
Questions

Ecrivez un programme qui prend une chaîne de caractères et affiche la chaîne avec
la première lettre de chaque mot en majuscule.

resultat=""
debut_mot = True # Indique si on est au début d’un mot

for c in chaine:
if debut_mot and c != " ": # Si c’est le début d’un mot
resultat += [Link]() # Mettre en majuscule
debut_mot = False
else:
resultat += c
if c == " ":
debut_mot = True

print(resultat)

5
Les variables d’une fonction
Les variables définies dans une fonction sont appelées variables locales.
La portée d’une variable locale est limitée à la fonction où elle a été définie,
on ne peut pas y faire référence en dehors.

Exemple
def incremente(x):
x += 1
z = 2

incremente(2)
print(x)
#print(z)

Lors de l’exécution, l’affichage produit un NameError (variable pas définie).

6
Évaluation de la fonction

Les arguments sont des variables locales à la fonction.


Les arguments sont passés par la copie d’une référence sur l’objet donné en
argument.

def incremente(x):
x += 1

y = 0
incremente(y)
print(y)
Évaluation de la fonction

Les arguments sont des variables locales à la fonction.


Les arguments sont passés par la copie d’une référence sur l’objet donné en
argument.

def incremente(x):
x += 1 y 0

y = 0
incremente(y)
print(y)
Évaluation de la fonction

Les arguments sont des variables locales à la fonction.


Les arguments sont passés par la copie d’une référence sur l’objet donné en
argument.

def incremente(x):
x += 1 y 0

y = 0 x
incremente(y)
print(y)
Évaluation de la fonction

Les arguments sont des variables locales à la fonction.


Les arguments sont passés par la copie d’une référence sur l’objet donné en
argument.

def incremente(x):
x += 1 y 0

y = 0 x 1
incremente(y)
print(y)

7
Référence sur une liste

À retenir :
Sur une liste, on peut modifier son contenu depuis la fonction, car objet mu-
table.

l 3,4,5
def incrementeListe(k):
for i in range(len(k)):
k[i] += 1

l = [3,4,5]
incrementeListe(l)
print(l)

8
Référence sur une liste

À retenir :
Sur une liste, on peut modifier son contenu depuis la fonction, car objet mu-
table.

l 3,4,5
def incrementeListe(k):
for i in range(len(k)):
k[i] += 1
Après appel incrementeListe
l = [3,4,5] l 4,5,6
incrementeListe(l)
print(l)
k

8
Référence sur une liste

À retenir :
Cependant, on ne peut pas modifier la liste elle même!

def supprimeListe(k):
k= [] l 3,4,5

l = [3,4,5]
supprimeListe(l)
print(l)
Référence sur une liste

À retenir :
Cependant, on ne peut pas modifier la liste elle même!

def supprimeListe(k):
k= [] l 3,4,5

l = [3,4,5] k
supprimeListe(l)
print(l)
Référence sur une liste

À retenir :
Cependant, on ne peut pas modifier la liste elle même!

def supprimeListe(k):
k= [] l 3,4,5

l = [3,4,5] k
supprimeListe(l)
print(l)

9
Utilisation de variables globales
Les variables définies hors des fonctions sont globales par opposition aux variables
locales des fonctions.
On peut les utiliser dans toutes les fonctions.
Attention: on ne peut pas changer la valeur d’une variable globale à l’intérieur d’une
fonction.

x = 1
print(x)

def affiche(): #utilisation d’une variable globale


print(x)

x += 3
affiche()

def ajoute(): #modification d’une variable globale


x += 1

ajoute()
print(x)

10
Utilisation de variables globales

Pour modifier une variable globale, il faut spécifier dans la fonction que la
variable est globale par le mot clé global.
▶ Il est déconseillé de faire usage de ce mot clé et des variables globales en général.

x=1

def ajoute(): #modif. d’une var. globale avec le mot clé "global"
global x
x += 1

ajoute()
print(x)

11
Utilisation de variables globales

Qu’affiche-t-on à l’exécution?

x=3

def ajoute(): #rédefinir une variable globale


x=5
x += 1

ajoute()
print(x)

Explication : On a rédefinit la variable x.

12
Représentation des arguments dans un appel de fonction

On peut donner des valeurs par défaut aux arguments d’une fonction de la
manière suivante:
def ma_fonction(pays, age = 1, nom = "toto").
Les variables ayant une valeur par défaut peuvent être omises.

def ma_fonction(pays, age = 1, nom = "toto"):


print(nom," a ", age, "ans et vit en ", pays)

ma_fonction("france")
ma_fonction("allemagne", 18, "kurt")
ma_fonction("italie", 77)

13
Ordre des arguments dans un appel de fonction

En règle générale, on respecte l’ordre des arguments donnes dans la signature.


On peut également donner les arguments dans le désordre en spécifiant leur
nom.

Exemple
def ma_fonction(pays, age = 1, nom = "toto"):
print(nom," a ", age, "ans et vit en ", pays)

ma_fonction(nom = "kader", age = 18, pays = "algérie")


ma_fonction("france", nom = "sylvie")

14
Appel de fonction depuis une autre fonction

La fonction peut appeler une autre fonction.

Exemple
def doubler(x):
return 2*x

def sommer(x,y):
return x+doubler(y)

print(sommer(2,3))

15
Appel de fonction depuis une autre fonction

Que affiche-t-on à l’exécution? Au besoin, corriger afin de doubler les valeurs dans
la liste.

def doubler(x):
return 2*x

def doubler_liste(l):
for i in range(len(l)):
doubler(l[i])
return l

l=[2,3,4]
print(doubler_liste(l))

16
Expressions lambda

Pour définir une fonction courte, il existe une syntaxe alternative utilisant
l’opérateur lambda.
La définition doit tenir sur une ligne.
▶ On ne peut pas utiliser des instructions de contrôle

g = lambda x: x*2
print(g(2))

17
Expressions lambda

Pour définir une fonction courte, il existe une syntaxe alternative utilisant
l’opérateur lambda.
La définition doit tenir sur une ligne.
▶ On ne peut pas utiliser des instructions de contrôle

g = lambda x: x*2
print(g(2))

La fonction définie par un lambda est anonyme, c’est à dire qu’elle n’a pas de
nom.
▶ C’est utile quand la fonction sert une seule fois

print((lambda x: x*2)(3))

#applique la fonction à chaque élément de range(10)


list(map(lambda x: x*2,range(10)))

17

Vous aimerez peut-être aussi