La différence entre len() et sys.getsizeof() en Python
D’un coup d’œil, les fonctions len()
et sys.getsizeof()
de Python semblent avoir la même fonctionnalité pour trouver la longueur des objets. Au contraire, ces deux méthodes ont des significations sémantiques différentes lorsqu’elles sont implémentées.
La fonction len()
en Python
La fonction len()
est utilisée pour rechercher le nombre d’éléments d’un objet. L’objet peut être un tableau, une file d’attente, un tuple ou une liste. Si cette méthode est appelée sur une chaîne, elle renvoie le nombre de caractères de cette chaîne particulière.
Exemple:
print(len("Batman"))
Production :
6
6 est le nombre total de caractères composant la chaîne Batman.
Lorsque vous appelez la fonction len()
sur une liste d’éléments comme ci-dessous, elle renverra le nombre total d’éléments qui composent la liste.
animals = ["Koala", "Guineapig", "Bear", "Zebra", "Giraffe"]
print(len(animals))
Production :
5
La liste d’animaux contient un total de cinq animaux comme sortie renvoyée.
La fonction sys.getsizeof()
en Python
Le module sys en Python fournit une fonction sys.getsizeof()
, qui renvoie essentiellement la taille de la mémoire d’un objet qui lui est passé dans l’unité d’octets. La consommation de mémoire de l’objet est prise en compte au lieu de la consommation de mémoire à laquelle l’objet se réfère. Cette fonction est spécifique à l’implémentation, par conséquent, lorsque des objets intégrés lui sont transmis, elle renvoie des résultats corrects. Sinon, il peut renvoyer de faux résultats pour les extensions tierces.
Syntaxe sys.getsizeof()
sys.getsizeof(object[, default])
Alors que l’argument objet est l’élément pour lequel trouver la taille, l’argument par défaut vous permet de définir une valeur qui sera renvoyée si l’argument objet ne récupère pas la taille. Dans le cas où l’objet ne parvient pas à récupérer la taille et qu’une valeur par défaut n’est pas fournie, une exception TypeError
est levée.
Lorsque vous utilisez la fonction sys.getsizeof()
, elle appelle la méthode _sizeof_
de l’objet, puis elle ajoute une surcharge supplémentaire au ramasse-miettes si le ramasse-miettes gère l’objet.
Exemple:
import sys
print(sys.getsizeof("hello"))
Production :
54
La sortie est en octets
. Il s’agit de la taille totale de la mémoire occupée par bonjour
.
La chaîne vide prend même 49 octets en mémoire.
import sys
print(sys.getsizeof(""))
Production :
49
La principale différence qui existe entre la fonction len()
et sys.getsizeof()
est que la première renvoie la longueur réelle des éléments dans un conteneur tandis que la seconde renvoie la taille de la mémoire occupée par cet objet.