大家好代乃,新一期的薦書欄目如期跟大家見面了匀泊。
先來看看今天的主角是誰:《Python源碼剖析——深度探索動態(tài)語言核心技術(shù)》断部,2008年出版猎贴,作者 @陳儒 ,評分8.7分蝴光。
是的她渴,你沒看錯,出版年份2008年蔑祟。這本書基于Python2.5趁耗,到了十年后3.7版本的年代,可以說大部分內(nèi)容已經(jīng)過時了疆虚,而且苛败,還可能缺失了很多關(guān)鍵內(nèi)容。那你也許會問径簿,一本過時的書罢屈,有啥好推薦的呢?下面且聽我給你慢慢道來篇亭。
一個巧合缠捌,一份期待
在寫第一篇薦書《編寫高質(zhì)量代碼改善 Python 程序的 91 個建議》的時候,我偶然發(fā)現(xiàn)知乎上有人提及译蒂,說 @賴勇浩 大大正在接手這本源碼剖析的新版本編寫曼月,很多人留言說期待肃叶。我想起曾經(jīng)看到,有人推薦過這本書十嘿,于是便去查了一下因惭。
書的內(nèi)容簡介中有這一段,我看了便覺得興趣滿滿:
本書以CPython為研究對象绩衷,在C代碼一級蹦魔,深入細(xì)致地剖析了Python的實現(xiàn)。書中不僅包括了對大量Python內(nèi)置對象的剖析咳燕,更將大量的篇幅用于對Python虛擬機(jī)及Python高級特性的剖析勿决。通過此書,讀者能夠透徹地理解Python中的一般表達(dá)式招盲、控制結(jié)構(gòu)低缩、異常機(jī)制、類機(jī)制曹货、多線程機(jī)制咆繁、模塊的動態(tài)加載機(jī)制、內(nèi)存管理機(jī)制等核心技術(shù)的運(yùn)行原理顶籽,同時玩般,本書所揭示的動態(tài)語言的核心技術(shù)對于理解其他動態(tài)語言,如 Javascript礼饱、Ruby等也有較大的參考價值坏为。
作為一個半路上車,剛走出新手村的Pythoner镊绪,我正愁如何才能成為一個優(yōu)秀的Pythonista匀伏,這本書閃耀著絕世秘籍的光芒,我起初有點(diǎn)望而卻步蝴韭,過后卻又躍躍欲試够颠。
那么,新書啥時候上市呢万皿?在華蟒用戶組
里摧找,正好有人問到這個消息,群眾們紛紛表示翹首以待牢硅。不過蹬耘,賴勇浩站出來回復(fù)了:
看回復(fù)的時間,這事已經(jīng)過去一年了......
雖然這個神秘的新作者拖稿了减余,但書的期待值并未因此減損综苔,相反,這恰恰意味著新書上市之日更近了!說不定就在明年上半年了呢如筛。趕在新書出版前堡牡,我們薦書欄目先來安利一波,這絕對是一件有先見之明的事杨刨,喵喵晤柄,美滋滋~~~
一份提綱,一些建議
鋪墊了這么多妖胀,接下來要好好說下這本書的內(nèi)容了芥颈。以下內(nèi)容僅針對08版書籍,等新版上市后赚抡,薦書欄目會對兩版的差異跟進(jìn)介紹爬坑。
全書主要分兩部分,第一部分(1-6章)剖析Python的幾大內(nèi)建對象(如整數(shù)涂臣、字符串盾计、列表、字典)赁遗,涉及對象創(chuàng)建署辉、維護(hù)、緩沖池吼和、提升效率的機(jī)制等內(nèi)容涨薪;第二部分(7-16章)剖析Python虛擬機(jī),涉及虛擬機(jī)框架炫乓、一般表達(dá)式、控制流献丑、函數(shù)機(jī)制末捣、類機(jī)制、運(yùn)行環(huán)境初始化创橄、動態(tài)加載機(jī)制箩做、多線程機(jī)制、內(nèi)存管理機(jī)制等內(nèi)容妥畏。
有道是邦邦,Python中萬物皆對象。而Python是用C語言實現(xiàn)的醉蚁,C語言卻是典型的面向過程語言 燃辖,那么,它是如何實現(xiàn)”萬物皆對象“的呢网棍?實際上黔龟,Python對象是C的結(jié)構(gòu)體在堆上申請的一塊內(nèi)存(包括連續(xù)內(nèi)存與非連續(xù)內(nèi)存),所有內(nèi)建的類型對象都是被靜態(tài)初始化了的。
按照書中的分類氏身,Python對象可分如下:
其中巍棱,F(xiàn)undamental對象是指類型對象,Numeric對象是指數(shù)值對象蛋欣,Sequence對象是指容納其它對象的序列集合對象航徙,Mapping對象是類似于C++中map的關(guān)聯(lián)對象,Internal對象是Python虛擬機(jī)在運(yùn)行時內(nèi)部使用的對象陷虎。
還有一種分類方式到踏,Python對象可以分為定長對象 與變長對象。從這些分類中可以看出泻红,Python對象之間存在著天然差異夭禽,那么,不同對象的生命周期管理(創(chuàng)建谊路、維護(hù)讹躯、使用、回收)缠劝、對象的多態(tài)潮梯、對象緩沖池、以及其它特有的機(jī)制惨恭,這些都是怎么實現(xiàn)的呢秉馏?
書中第一部分內(nèi)容就是對以上問題的回答。閱讀過程中脱羡,我讀到了一些熟悉的內(nèi)容萝究,例如之前在《Python中的“特權(quán)種族”是什么?》中發(fā)明的“特權(quán)種族”(例如神秘的[-5,256]數(shù)字锉罐、以及Intern機(jī)制的短字符串)帆竹,它們在內(nèi)建對象剖析的部分里都有。閱讀的過程脓规,就是從知其然栽连,到知其所以然的過程,于我大有益處侨舆。
說實話秒紧,源碼分析的部分,對我來說太難了挨下,因為C語言基礎(chǔ)早已交還給大學(xué)老師了......但是熔恢,閱讀第一部分的好處是,你不必完全懂源碼复颈,因為作者加了很多注釋绩聘,相關(guān)的分析過程也很詳盡沥割。
至于書中的第二部分,我還不敢進(jìn)入凿菩。這部分需要一些編譯原理知識机杜、字節(jié)碼及虛擬機(jī)知識。留待今后繼續(xù)學(xué)習(xí)衅谷。
全書章節(jié)的編排結(jié)構(gòu)特別清晰椒拗,已經(jīng)提供了一份很好的學(xué)習(xí)路徑提綱。這里获黔,我還搜集了一些閱讀建議蚀苛,下面看看有什么:
如果你在用一門高級語言,想了解語言的實現(xiàn)原理玷氏,這本書是你的必選堵未;如果你是一個 C/C++ 程序員,想寫出高質(zhì)量的程序盏触,這本書也是你必選渗蟹。—— @simonliu
需要說明的是赞辩,我不會向python語言的學(xué)習(xí)者推薦這本書雌芽,因為它不是一本python語言的教材。相反辨嗽,作為分析Python運(yùn)行時機(jī)制的專著世落,書中充斥著有關(guān)C、C++的討論(我還讀到了有用java做為比較的段落)糟需。這不要求讀者是專業(yè)的C/C++程序員屉佳,但是至少應(yīng)該能夠讀懂C代碼,最好知道 C++ STL是怎么回事洲押。......我堅信忘古,這本優(yōu)秀的著作,值得譯為英文诅诱,向全世界的C/C++/Python程序員推薦∷椭欤——@膘
很好的講解Python源碼剖析的書籍娘荡,深入講解了Python的各種特性是如何通過C語言實現(xiàn)的,對于想了解Python底層實現(xiàn)的程序員很有幫助驶沼,講解的很詳細(xì)炮沐,不過看底層C實現(xiàn)看多了也確實容易乏味、消磨耐性回怜,尤其后面高級特性的剖析時大年,看起來愈發(fā)吃力换薄、費(fèi)勁。 目前先通讀了一遍翔试,幫助自己了解了Python的不少特性和其底層機(jī)制轻要,還有很多地方草草略過并不十分明白,日后實力更上一層樓時垦缅,再回來拜讀冲泥。 好書推薦!——@流星云
源碼可以不讀壁涎,這本書還是值得讀的凡恍。——@賴勇浩
常備的手邊書,深入了解Python的好書怔球〗涝停——@清風(fēng)
一份資源,更多福利
相信能夠讀到這里的讀者竟坛,都燃起了一些閱讀興趣闽巩,可以“按圖索驥”去學(xué)習(xí)。電子學(xué)習(xí)資源很多流码,對于愛學(xué)習(xí)
的你們來說又官,這不是啥難事。豆瓣讀書漫试、當(dāng)當(dāng)網(wǎng)和京東圖書上六敬,也有電子書可購買。
但是驾荣,如果你想買紙質(zhì)書外构,不好意思,早就絕版了播掷。二手舊書的價格貴得嚇人审编,下面訊息給不差錢的同學(xué)們參考下:
在中英文的Python書籍中,這本剖析源碼的書籍歧匈,可能是絕無僅有的一本垒酬,就憑這點(diǎn),怎么推薦都不為過件炉。對于可能會很快上市的新書勘究,則是怎么期待都不為過的。如果有小伙伴知道出版消息斟冕,懇請在后臺告知于我口糕,不勝感激。
在薦書《黑客與畫家》的時候磕蛇,我們送出了一本精裝書福利景描。等到這本源碼剖析的新書上市時十办,送書福利肯定會是大大的,大家拭目以待吧超棺。當(dāng)然向族,后續(xù)其它薦書的書目,也很有可能會送福利说搅,一樣不容錯過炸枣。所以,我要打個小廣告弄唧,還沒關(guān)注的小伙伴适肠,趕緊掃描下方二維碼,立刻關(guān)注公眾號Python貓
候引,關(guān)注我們的薦書欄目侯养,讓我們一同學(xué)習(xí),一同進(jìn)步澄干,一同搶福利逛揩,喵喵喵~~~
本文原創(chuàng)并首發(fā)于微信公眾號【Python貓】,后臺回復(fù)“愛學(xué)習(xí)”麸俘,免費(fèi)獲得20+本精選電子書辩稽。
往期薦書回顧:
第一期:《編寫高質(zhì)量代碼改善 Python 程序的 91 個建議》
第二期:《Python最佳實踐指南》
第三期:《黑客與畫家》
延伸閱讀:
陳儒博客:https://blog.csdn.net/balabalamerobert
豆瓣書目:https://book.douban.com/subject/3117898/
Python源碼:https://svn.python.org/projects/
書評筆記:
https://book.douban.com/review/8912893/
https://blog.csdn.net/lxlmycsdnfree/article/details/78782165