python原始碼剖析 這本書相當好。
我用python也有幾個月時間了,這時候讀python原始碼,會對提高c語言水平、python水平、演算法基礎都有相當的幫助。
python原始碼剖析.chm
這個檔案。學習心得嘛,就是多看多想,有問題的時候再除錯python原始碼驗證想法。
robert chen(search.pythoner@gmail.com
)
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...