La différence entre len() et sys.getsizeof() en Python

Neema Muganga 30 janvier 2023
  1. La fonction len() en Python
  2. La fonction sys.getsizeof() en Python
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.