Heim  >  Artikel  >  Backend-Entwicklung  >  Welche Datentypen werden von Python nicht unterstützt?

Welche Datentypen werden von Python nicht unterstützt?

(*-*)浩
(*-*)浩Original
2019-06-15 15:00:5320603Durchsuche

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.

Welche Datentypen werden von Python nicht unterstützt?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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Hat Python eine Überlastung?Nächster Artikel:Hat Python eine Überlastung?