Python原始碼學習筆記(1 基本資料型別)

2021-06-05 13:05:07 字數 962 閱讀 9271

python原始碼剖析 這本書相當好。

我用python也有幾個月時間了,這時候讀python原始碼,會對提高c語言水平、python水平、演算法基礎都有相當的幫助。

python原始碼剖析.chm

這個檔案。學習心得嘛,就是多看多想,有問題的時候再除錯python原始碼驗證想法。

robert chen([email protected]

)

chapter 1. pyobject

物件大小一旦建立就不變了

pyobject 

pyvarobject 

★ 記憶體空間大小一定和物件型別有關

typedef struct _typeobject

pytypeobject的型別是用自身定義的?

pytypeobject pytype_type =

★ c語言實現多型只需要多加乙個結構體ob_type,把ob_type*組合進去即可?

指向型別物件的指標不會增加型別物件的引用計數。

此設計方法在c語言中用處頗大,參考雲風相關博文《我所偏愛的 c 語言物件導向程式設計正規化》

但是雲風的文章寫的不明不白,互相印證一下就ok了。

chapter 2. pyintobj

最有特色的地方有兩處:

1、小整數特殊處理,永遠只存在乙份

2、用多個鍊錶管理所有整數,可以看作特製的記憶體分配器。最神奇的是刪除某個整數物件時的行為。

此章有意思的地方是鍊錶使用時的靈活技巧,很有意思。

chapter 3. pystringobj

pystringobj是一種immutable物件,內容不可變。這和能做key有關係嗎?

intern機制

void pystring_interninplace(pyobject **p)

while(0)

chapter 5. pydictobject

Android Cursor原始碼筆記 1

cursor介面 extends closeable,沒啥說的.因為本身就是乙個介面,所以其原始碼的最大價值其實就是作為乙份guide存在,注釋還有讓人讀的慾望的.就當翻譯一遍guide了.不過有些太過直白的函式就不cover了.cursor說白了就是乙個row set附贈一些輔助函式.gettyp...

Ubuntu學習筆記(1) 編譯原始碼包

以tree實用程式 以樹型結構獲取目錄樹 為例,介紹ubuntu中如何管理原始碼包,包括查詢,獲取,編譯原始碼包,直至安裝。1 在獲取原始碼包之前,確保在軟體源配置檔案 etc apt sources.list中新增了deb src項 2 使用如下命令獲取tree原始碼包的詳細資訊 sudoapt ...

Ubuntu學習筆記(1) 編譯原始碼包

以tree實用程式 以樹型結構獲取目錄樹 為例,介紹ubuntu中如何管理原始碼包,包括查詢,獲取,編譯原始碼包,直至安裝。1 在獲取原始碼包之前,確保在軟體源配置檔案 etc apt sources.list中新增了deb src項 2 使用如下命令獲取tree原始碼包的詳細資訊 sudo apt...