原文:《深度剖析CPython解释器》6. 解密Python中bytes对象的底层实现,以及相关操作

楔子 不少编程语言中的 字符串 都是使用字符数组 或者称字符序列 来表示,比如C语言和go语言就是这样。 一个字节最多能表示 个字符,所以对于英文来说足够了,因此一个英文字符占一个字节即可,然而对于那些非英文字符便力不从心了。因此为了表示这些非英文编码,于是多字节编码应运而生 通过多个字节来表示一个字符。但由于原始字节序列不维护编码信息,因此操作不慎便导致各种乱码现象。 而Python提供的解决方 ...

2020-08-05 22:40 7 892 推荐指数:

查看详情

深度剖析CPython解释器》7. 解密Python字符串的底层实现,以及相关操作

楔子 这一次我们分析一下Python的字符串,首先Python的字符串是一个变长对象,因为不同长度的字符串所占的内存空间是不一样的;但同时字符串又是一个不可变对象,因为一旦创建就不可以再修改了。 而Python的字符串是通过unicode来表示的,因此在底层对应的结构体 ...

Sat Aug 08 07:44:00 CST 2020 13 769
深度剖析CPython解释器》8. 解密Python列表的底层实现,通过源码分析列表支持的相关操作

楔子 Python的列表可以说使用的非常广泛了,在初学列表的时候,老师会告诉你列表就是一个大仓库,什么都可以存放。不过在最开始的几个章节,我们花了很大的笔墨介绍了Python对象,并明白了Python变量的本质,我们知道列表存放的元素其实都是泛型指针PyObject *,所以到现在 ...

Sun Aug 09 12:03:00 CST 2020 8 843
深度剖析CPython解释器》4. 解密Python中最简单的对象--浮点数的底层实现

楔子 从现在开始,我们就来分析Python中常见的内置对象、以及对应的实例对象,看看它们在底层是如何实现的。但说实话,我们在前面几节中介绍对象的时候,已经说了不少了,不过从现在开始要进行更深入的分析。 除了对象本身,还要看对象支持的操作底层是如何实现的。我们首先以浮点数为例,因为它是最简单 ...

Sun Aug 02 03:57:00 CST 2020 10 791
深度剖析CPython解释器》22. 解密Python的生成器对象,从字节码的角度分析生成器的底层实现以及执行逻辑

楔子 下面我们来聊一聊Python的生成器,它是我们理解后面协程的基础,生成器的话,估计大部分人在写程序的时候都想不到用。但是一旦用好了,确实能给程序带来性能上的提升,那么我们就来看一看吧。 生成器 基本用法 我们知道,一个函数如果它的内部出现了yield关键字,那么它就不再是普通的函数 ...

Sun Sep 06 08:55:00 CST 2020 4 301
深度剖析CPython解释器》2. 解密PyObject、PyVarObject、PyTypeObject在Python对象体系中所代表的含义,用CPython来总结Pythontype和object之间的关系

楔子 我们在上一篇说到了,面向对象理论"类"和"对象"这两个概念在Python内部都是通过"对象"实现的。"类"是一种对象,称为"类型对象","类"实例化得到的也是"对象",称为"实例对象"。 并且根据对象的不同特点还可以进一步分类: 可变对象对象创建之后可以本地修改; 不可 ...

Thu Jul 30 02:12:00 CST 2020 1 1539
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM