徐州达内IT培训学校

试听课 + 活动课
填写信息优先获取试听课

位置:学校首页 > 学校动态>徐州靠谱的Python培训机构哪家好一些

徐州靠谱的Python培训机构哪家好一些

达内致力于面向IT互联网行业,培养软件开发工程师、测试工程师、系统管理员、智能硬件工程师、UI设计师、网络营销工程师、会计等职场人才。2015年起,推出面向青少年的少儿编程、智能机器人编程、编程数学等K12课程。


Python3 起,str 就采用了 Unicode 编码(注意这里并不是 utf8 编码,尽管 .py 文件默认编码是 utf8 )。每个标准 Unicode 字符占用 4 个字节。这对于内存来说,无疑是一种浪费。

Unicode 是表示了一种字符集,而为了传输方便,衍生出里如 utf8 , utf16 等编码方案来节省存储空间。Python内部存储字符串也采用了类似的形式。

1. 三种内部表示Unicode字符串

为了减少内存的消耗,Python使用了三种不同单位长度来表示字符串:

每个字符 1 个字节(Latin-1)

每个字符 2 个字节(UCS-2)

每个字符 4 个字节(UCS-4)

源码中定义字符串结构体:

# Include/unicodeobject.h

typedef uint32_t Py_UCS4;

typedef uint16_t Py_UCS2;

typedef uint8_t Py_UCS1;

# Include/cpython/unicodeobject.h

typedef struct {

PyCompactUnicodeObject _base;

union {

void *any;

Py_UCS1 *latin1;

Py_UCS2 *ucs2;

Py_UCS4 *ucs4;

} data; /* Canonical, smallest-form Unicode buffer */

} PyUnicodeObject;

如果字符串中所有字符都在 ascii 码范围内,那么就可以用占用 1 个字节的 Latin-1 编码进行存储。而如果字符串中存在了需要占用两个字节(比如中文字符),那么整个字符串就将采用占用 2 个字节 UCS-2 编码进行存储。

2. 为什么内部不采用 utf8 进行编码

较受欢迎的 Unicode 编码方案,Python内部却不使用它,为什么?

这里就得说下 utf8 编码带来的缺点。这种编码方案每个字符的占用字节长度是变化的,这就导致了无法按索引随机访问单个字符,例如 string[n] (使用utf8编码)则需要先统计前n个字符占用的字节长度。索引由 O(1) 变成了 O(n) ,这更无法让人接受。

因此Python内部采用了定长的方式存储字符串。

领取试听课
温馨提示:为不影响您的学业,来校区前请先电话或QQ咨询,方便我校安排相关的专业老师为您解答
版权所有:搜学搜课(www.soxsok.com) 技术支持:搜学搜课网