Python verfügt nicht über Char- oder Byte-Typen zum Speichern einzelner Zeichen oder 8-Bit-Ganzzahlen. Sie können Zeichenfolgen der Länge 1 verwenden, um Zeichen oder 8-Bit-Ganzzahlen darzustellen.
In Python beträgt der Platz, den jedes Zeichen in der Zeichenfolge einnimmt, Bit (Empfohlenes Lernen: Python-Video-Tutorial)
>>> import sys >>> sys.getsizeof('') 37 >>> sys.getsizeof('a') 38
Wie Sie können Sehen Sie, das Nullzeichen belegt 37 Bytes und die Zeichenfolge „a“ mit der Länge 1 belegt 38 Bytes Speicher. Mit einem weiteren Zeichen a gibt es ein weiteres Byte.
In Python wird die Zeichenfolge wie folgt implementiert:
typedef struct { PyObject_VAR_HEAD long ob_shash; int ob_sstate; char ob_sval[1]; /* Invariants: * ob_sval contains space for 'ob_size+1' elements. * ob_sval[ob_size] == 0. * ob_shash is the hash of the string or -1 if not computed yet. * ob_sstate != 0 iff the string object is in stringobject.c's * 'interned' dictionary; in this case the two references * from 'interned' to this object are *not counted* in ob_refcnt. */ } PyStringObject;
Jedes Zeichen wird in ob_sval gespeichert und macht 8 Bits aus. Die restlichen 36 Bytes stammen hauptsächlich aus dem Makro PyObject_VAR_HEAD. Tatsächlich verwendet Pythons String-Implementierung auch eine globale Variable namens *interned, die Strings mit einer Länge speichern kann 0 oder 1, also char, können Platz sparen und beschleunigen.
Tatsächlich gibt es in Python weder Zeiger noch „nackte Datenstrukturen“ (Nichtobjekte), selbst die meisten einfachen Ganzzahlen werden so implementiert this
typedef struct { PyObject_HEAD long ob_ival; } PyIntObject;
Kurz gesagt, dieses Design erfüllt Pythons Designphilosophie „Alles ist ein Objekt♂“ und „Alles ist so einfach wie möglich“.
Weitere technische Artikel zu Python , besuchen Sie bitte die Spalte Python-Tutorial, um mehr zu erfahren!
Das obige ist der detaillierte Inhalt vonWelche Datentypen werden von Python nicht unterstützt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!