Der Unterschied zwischen len() und sys.getsizeof() in Python
Auf den ersten Blick scheinen die Funktionen len()
und sys.getsizeof()
in Python die gleiche Funktionalität zum Ermitteln der Länge von Objekten zu haben. Im Gegensatz dazu haben diese beiden Methoden bei der Implementierung insgesamt unterschiedliche semantische Bedeutungen.
Die Funktion len()
in Python
Mit der Funktion len()
wird die Anzahl der Elemente eines Objekts abgefragt. Das Objekt kann ein Array, eine Warteschlange, ein Tupel oder eine Liste sein. Wenn diese Methode für eine Zeichenkette aufgerufen wird, gibt sie die Anzahl der Zeichen in dieser bestimmten Zeichenkette zurück.
Beispiel:
print(len("Batman"))
Ausgabe:
6
6 ist die Gesamtzahl der Zeichen, die die Batman-Zeichenkette bilden.
Wenn Sie die Funktion len()
für eine Liste von Elementen wie unten aufrufen, wird die Gesamtzahl der Elemente zurückgegeben, aus denen die Liste besteht.
animals = ["Koala", "Guineapig", "Bear", "Zebra", "Giraffe"]
print(len(animals))
Ausgabe:
5
Die Tierliste enthält als zurückgegebene Ausgabe insgesamt fünf Tiere.
Die Funktion sys.getsizeof()
in Python
Das sys-Modul in Python bietet eine Funktion sys.getsizeof()
, die im Wesentlichen die Speichergröße eines übergebenen Objekts in der Einheit Byte zurückgibt. Der Speicherverbrauch des Objekts wird anstelle des Speicherverbrauchs berücksichtigt, auf den sich das Objekt bezieht. Diese Funktion ist implementierungsspezifisch, daher gibt sie bei der Übergabe integrierter Objekte korrekte Ergebnisse zurück. Andernfalls werden möglicherweise falsche Ergebnisse für Erweiterungen von Drittanbietern zurückgegeben.
sys.getsizeof()
Syntax
sys.getsizeof(object[, default])
Während das Objektargument das Element ist, dessen Größe ermittelt werden soll, können Sie mit dem Standardargument einen Wert definieren, der zurückgegeben wird, wenn das Objektargument die Größe nicht abruft. Falls das Objekt die Größe nicht abrufen kann und kein Standardwert bereitgestellt wird, wird eine TypeError
-Ausnahme ausgelöst.
Wenn Sie die Funktion sys.getsizeof()
verwenden, ruft sie die Methode _sizeof_
des Objekts auf und fügt dann einen zusätzlichen Garbage Collector-Overhead hinzu, wenn der Garbage Collector das Objekt verwaltet.
Beispiel:
import sys
print(sys.getsizeof("hello"))
Ausgabe:
54
Die Ausgabe erfolgt in bytes
. Dies ist die Gesamtspeichergröße, die hello
belegt.
Der Leerstring nimmt sogar 49 Bytes im Speicher ein.
import sys
print(sys.getsizeof(""))
Ausgabe:
49
Der Hauptunterschied zwischen den Funktionen len()
und sys.getsizeof()
besteht darin, dass erstere die tatsächliche Länge der Elemente innerhalb eines Containers zurückgibt, während letztere die Speichergröße dieses Objekts zurückgibt.