- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte personDes objets et des noms
L'un des gros avantages de Python par rapport à d'autres langages de programmation, c'est qu'il se charge pour nous de gérer beaucoup de choses en arrière-plan, et notamment la gestion de la mémoire.
Bien que nous n'ayons pas à gérer la mémoire nous-mêmes, il est cependant important de comprendre ce qu'il se passe quand on crée une variable.
Création d'une variable
Une variable, ce n'est rien de plus qu'un nom associé à un objet.
nombre = 5
Avec la ligne de code ci-dessus, Python crée un objet de type nombre entier avec la valeur 5
, et un nom qui s'appelle nombre
et qui pointe vers cet objet.
Ce nombre 5
existe ainsi dans la mémoire de notre ordinateur et on peut y accéder avec la variable nombre
.
On pourrait très bien créer d'autres variables qui pointent vers le même objet :
nombre_2 = nombre
On pourrait croire qu'un autre nombre entier a été créé, avec lui aussi la valeur 5
, auquel on associerait le nom nombre_2
. Mais en réalité, ça n'est pas le cas : nombre_2
va pointer vers le même objet en mémoire que nombre
. Ces deux noms différents pointent bien vers le même objet, dans ce cas-ci, le nombre entier 5
.
On peut donc accéder à ce nombre 5
avec la variable nombre
, ainsi qu'avec la variable nombre_2
. Mais dans les deux cas, c'est le même objet qui nous est retourné.
Si par contre on assigne nombre_2
à un autre objet, comme le nombre 10
dans l'exemple ci-dessous, on aura bien deux objets en mémoire, 5
et 10
, avec les variables nombre
et nombre_2
qui pointent respectivement vers ces deux objets (5 et 10).
nombre_2 = 10
Le Garbage Collector
Maintenant que se passe-t-il si on assigne une nouvelle valeur à la variable nombre
?
nombre = 1
On va créer un nouvel objet, dans notre exemple le nombre entier 1
, et faire maintenant pointer la variable nombre
vers ce nouvel objet en mémoire. Le nombre entier 5
n'est plus associé à aucune variable et Python va tout simplement se débarrasser de cet objet.
On appelle cette opération, réalisée automatiquement par Python, le Garbage Collector, qu'on pourrait traduire en français par un ramasse-miettes.
C'est pour cette raison qu'on dit souvent que Python est assez simple à utiliser, car on n'a en effet pas besoin de gérer nous-mêmes la mémoire de notre programme. Python est capable de se rendre compte lorsqu'un objet n'est plus associé à un nom, et de le supprimer pour libérer de la place dans la mémoire de notre ordinateur. Dans ce cas-ci, le nombre entier 5
va être supprimé de la mémoire de notre script Python.
Vérifier la place occupée par un objet en mémoire
Heureusement, Python nous fournit un moyen facile de vérifier l'adresse d'un objet dans la mémoire de notre ordinateur : la fonction id
. On peut passer n'importe quel objet à cette fonction.
Utilisons un interpréteur Python pour comprendre le fonctionnement de cette fonction id
.
>>> id(nombre)
4552387440
Si on lui passe la variable nombre
que l'on a créée précédemment, la fonction id
va nous retourner un identifiant unique qui est tout simplement un nombre entier.
Ce nombre permet à Python d'identifier de façon unique les objets et de savoir à quel emplacement cet objet se trouve dans la mémoire.
>>> id(500)
4514223664
Si on lui passe le nombre 500
, le nombre entier retourné correspond à l'adresse en mémoire de cet objet 500
qui vient d'être créé.
>>> id(500)
4514223600
Si on refait id(500)
une deuxième fois, le nombre qui est retourné n'est pas le même. On a créé un autre objet 500
qui est différent du premier, l'espace en mémoire qu'il occupe est différent.
Dans l'exemple ci-dessous, l'objet 500
est le même, que l'on y accède avec la variable a
ou la variable b
.
La variable a
et la variable b
pointent en effet vers le même objet 500
en mémoire, ce qui est prouvé par l'identifiant identique, retourné par la fonction id
.
>>> a = 500
>>> b = a
>>> id(a)
4514223568
>>> id(b)
4514223568
Associons maintenant b
à un autre nombre :
>>> b = 1000
>>> id(b)
4514224688
L'adresse en mémoire de b
n'est plus la même que celle de a
. On a un autre nombre retourné par la fonction id
pour la variable b
puisque b
pointe désormais vers le nombre 1000
, et ne pointe plus vers le même objet que la variable a
.
On a donc deux objets 500
et 1000
auxquels on peut accéder avec la variable a
et la variable b
. Ce sont deux objets distincts avec deux noms distincts.
Ce n'est pas fini...
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.