Récupération des emplacements mémoire
Méthodes pour récupérer les adresses mémoire en Python
1. Utilisation de la fonction id()
La méthode principale pour récupérer une adresse mémoire en Python est la fonction id()
. Elle renvoie un identifiant unique pour un objet.
## Basic id() function usage
x = 100
print(f"Memory address of x: {id(x)}")
2. Représentation hexadécimale avec hex()
Pour obtenir un format d'adresse mémoire plus lisible, combinez id()
avec hex()
:
## Hexadecimal memory address representation
y = "LabEx Python"
memory_address = hex(id(y))
print(f"Hexadecimal memory address: {memory_address}")
Techniques de récupération des adresses mémoire
Technique |
Méthode |
Type de retour |
Cas d'utilisation |
id() |
Identifiant direct |
Entier |
Emplacement mémoire de base |
hex(id()) |
Format hexadécimal |
Chaîne de caractères |
Adresse lisible |
ctypes |
Accès mémoire de bas niveau |
Pointeur |
Manipulation avancée de la mémoire |
Récupération avancée des emplacements mémoire avec ctypes
import ctypes
def get_memory_address(obj):
return ctypes.cast(id(obj), ctypes.py_object).value
Visualisation des adresses mémoire
graph TD
A[Python Object] --> B[id() Function]
B --> C[Memory Address]
C --> D[Hexadecimal/Integer Representation]
Exemples pratiques
Comparaison des adresses mémoire de différents objets
## Demonstrating unique memory addresses
list1 = [1, 2, 3]
list2 = [1, 2, 3]
list3 = list1
print(f"list1 address: {id(list1)}")
print(f"list2 address: {id(list2)}")
print(f"list3 address: {id(list3)}")
Adresse mémoire pour les objets immuables et mutables
## Memory address behavior
x = 500 ## Immutable integer
y = 500 ## May have same address due to integer caching
z = [1, 2, 3] ## Mutable list
w = [1, 2, 3] ## Different list, different address
print(f"x address: {id(x)}")
print(f"y address: {id(y)}")
print(f"z address: {id(z)}")
print(f"w address: {id(w)}")
Points clés à considérer
- Les adresses mémoire peuvent changer entre les sessions Python
- Tous les objets ne garantissent pas des adresses uniques
- Elles sont principalement utilisées pour le débogage et l'analyse de bas niveau
- Les environnements Python de LabEx permettent de récupérer les adresses mémoire de manière cohérente
Bien que la récupération des adresses mémoire soit utile, un accès fréquent peut avoir un impact sur les performances. Utilisez-la judicieusement dans vos applications Python.