python2字符串在内存中如何存放

  • str类型
    存在磁盘上的格式与存在内存中格式一致,例如ascii编码占一个字节,utf-8编码中文3个字节,英文1个字节
    gbk编码中文2个字节,英文1个字节

注意python2是不会自动转换成unicode格式

  • unicode类型
    python2用来支持多语言,不同编码类型的str转换需要通过它
    unicode表示字符串属于逻辑层面,字节串(str)表示存放格式属于物理层面,如ascii,utf-8,gbk属于字节串

  • ascii在内存中字节数(utf-8/gbk同样1个字节)

>>> sys.getsizeof("a")       #pyton做了包装,包含了其它数据内容
38
>>> sys.getsizeof("aa") - sys.getsizeof("a")   # 将字符重复一个求差值
1
  • unicode在内存中长度(python2中4个字节)
>>> sys.getsizeof(u"aa") - sys.getsizeof(u"a")   #python2中4个字节、python3中2个字节
4
>>> sys.getsizeof(u"你你") - sys.getsizeof(u"你")
4
  • utf-8长度(3个字节)
>>> a1,a2="a".encode("utf-8"),"aa".encode("utf-8")
>>> sys.getsizeof(a2) - sys.getsizeof(a1)  #英文一个字节
1

>>> b1,b2="你".decode("utf-8").encode("utf-8"),"你你".decode("utf-8").encode("utf-8")
>>> sys.getsizeof(b2) - sys.getsizeof(b1)   #中文三个字节
3

同样的方法可以知道gbk英文一个字节,中文2个字节

印光大师十念法(胡小林主讲第1集)
http://v.youku.com/v_show/id_XMzUwMzc4NzY4NA

posted @ 2018-05-14 14:04  妙音  阅读(378)  评论(0编辑  收藏  举报