Maison  >  Article  >  développement back-end  >  Quels sont les types de données que Python ne prend pas en charge ?

Quels sont les types de données que Python ne prend pas en charge ?

(*-*)浩
(*-*)浩original
2019-06-15 15:00:5320672parcourir

Python n'a pas de types char ou byte pour stocker des caractères uniques ou des entiers de 8 bits. Vous pouvez utiliser des chaînes de longueur 1 pour représenter des caractères ou des entiers de 8 bits.

Quels sont les types de données que Python ne prend pas en charge ?En Python, l'espace occupé par chaque caractère dans une chaîne est de bits (Apprentissage recommandé : Tutoriel vidéo Python)

>>> import sys
>>> sys.getsizeof('')
37
>>> sys.getsizeof('a')
38

Comme vous pouvez. voyez, le caractère nul occupe 37 octets et la chaîne 'a' de longueur 1 occupe 38 octets de mémoire. Avec un caractère a de plus, il y a un octet de plus.
En Python, la chaîne est implémentée comme ceci

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;

Chaque caractère est stocké dans ob_sval, représentant 8 bits. Les 36 octets restants proviennent principalement de la macro PyObject_VAR_HEAD. En fait, l'implémentation de chaîne de Python utilise également une variable globale appelée *interned, qui peut stocker des chaînes de longueur 0 ou. 1, c'est-à-dire char, peut économiser de l'espace et accélérer.

En fait, il n'y a ni pointeurs ni "structures de données nues" (non-objets) en python, même la plupart des entiers simples sont implémentés de cette manière

typedef struct {
   PyObject_HEAD
   long ob_ival;
} PyIntObject;

En bref, cette conception satisfait la philosophie de conception de Python selon laquelle « tout est un objet♂ » et « tout est aussi simple que possible ».

Pour plus d'articles techniques liés à Python, veuillez visiter la colonne Tutoriel Python pour apprendre !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Python a-t-il une surcharge ?Article suivant:Python a-t-il une surcharge ?