原文:《深度剖析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