【结论】 Python不支持的数据类型是char 、byte类型。
Python 之禅第三条 Simple is better than complex.
在 Python 中, string 中的每个字符占的空间大小是 8 bit=1byte。
空字符‘’占用25个byte, 长度为1的字符串 ‘a’ 或‘’1‘’占内存26个 byte,也就多一个字符多1个byte。
【示例】
import sys
print(sys.getsizeof(''))
print(sys.getsizeof('a'))
print(sys.getsizeof('1'))
print(sys.getsizeof('a1'))
25
26
26
27
-
每个 字符char存在 ob_sval 里面的, 占大小 8bit=1byte,余下24个byte 主要来自于宏 PyObject_VAR_HEAD。
-
Python 的string实现还用到了一个叫 *interned 的全局变量, 里面可以存长度为 0 或 1
的字符串(char),可以节省空间并且加快速度。 -
在 Python 里既没有指针也没有"裸露的数据结构" (非对象) 。
总之,这样设计满足 Python 一切都是对象, Simple is better than complex的设计思想。
【补充说明】
Python 中的5大标准数据类型
- Numbers (数字)
- int(有符号整型)
- long(长整型)
- float(浮点型)
- complex(复数)
- String(字符串)
- List(列表)
- Tuple(元组)
- Dictionary(字典)
注意: string != char
可变数据类型:列表list[ ]、字典dict{ }
不可变数据类型:整型int、字符串str’ '、元组tuple()
Python getsizeof()
详见: 【Python笔记】getsizeof() & getsize() 区分
Reference: https://www.php.cn/python-tutorials-423398.html