python不支援的資料型別有哪些

(*-*)浩
發布: 2019-06-18 11:48:08
原創
20645 人瀏覽過

Python沒有char或byte類型來保存單一字元或8位元整數。你可以使用長度為1的字串表示字元或8位元整數。

python不支援的資料型別有哪些在Python中, string中的每個字元佔的空間大小是bit. (推薦學習:Python影片教學

>>> import sys
>>> sys.getsizeof('')
37
>>> sys.getsizeof('a')
38
登入後複製

可以看到, 空字元佔用37個byte, 長度為1的字串'a' 佔記憶體38個byte. 多了一個字元a 之後多了1 個byte.
在Python 內部, string 是這樣實現的

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;
登入後複製

每個char 就是存在ob_sval 裡面的, 佔大小8bit. 餘下的36個byte 主要來自於宏PyObject_VAR_HEAD. 實際上python 的string實作也用到了一個叫*interned 的全域變數, 裡面可以存長度為0 或1 的字串, 也就是char, 可以節省空間並且加快速度.

實際上在python 裡既沒有指針也沒有"裸露的資料結構" (非物件), 連最簡單的整數integer 都是這樣實現的

typedef struct {
   PyObject_HEAD
   long ob_ival;
} PyIntObject;
登入後複製

總而言之, 這樣的設計滿足python 的"一切都是對♂象♂", "一切都盡可能simple" 的設計思想.

更多Python相關技術文章,請造訪Python教學欄位進行學習!

以上是python不支援的資料型別有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!