python没有char类型,python不支持char吗
大蟒没有茶类型,一个字符也是字符串。
为什么在计算机编程语言中没有专门的茶数据类型呢?
简单胜于复杂。在计算机编程语言中,字符串中的每个字符占的空间大小是8位。导入系统
sys.getsizeof( )
37
sys.getsizeof(a )
38
可以看到,空字符占用37个字节,长度为一的字符串一个占内存38个字节。多了一个字符a之后多了一个字节。
在计算机编程语言内部,字符串是这样实现的数据类型说明结构{
PyObject_VAR_HEAD
长ob _ shash
内部状态
char ob _ sval[1];
#zs#不变量:
* ob_sval包含用于" ob_size 1 "元素的空间。
* ob_sval[ob_size]==0 .
* ob_shash是字符串的散列,如果尚未计算,则为-1。
* ob_sstate!=0当且仅当字符串对象在stringobject.c中
*"实习"字典;在这种情况下,两个参考
* ob _ ref计数中*不计算*从被拘留到该对象的值。
#fzs#
} PyStringObject
每个茶就是存在ob_sval里面的,占大小8位。余下的36个字节主要来自于宏PyObject_VAR_HEAD .实际上大蟒的线实现还用到了一个叫*被拘留的全局变量,里面可以存长度为0 或一的字符串,也就是char,可以节省空间并且加快速度. zs#这个字典保存所有的内部字符串。注意,对
这个字典中的字符串*不*计入字符串的ob_refcnt .
当被拘留的字符串达到参考为0时,字符串解除分配
函数将从该字典中删除引用。
从另一个角度来看,实际引用
字符串的计数为:s-ob_refcnt (s-ob_sstate?2:0)
#fzs#
静态PyObject *已拘留
实际上在大蟒里既没有指针也没有裸露的数据结构(非对象), 连最简单的整数整数都是这样实现的数据类型说明结构{
PyObject _ HEAD
长ob _ ival
} PyIntObject
总而言之,这样的设计满足大蟒的一切都是对象, 一切都尽可能"简单"的设计思想。
相关教程推荐:Python视频教程
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。