Python貓薦書系統之四:《Python源碼剖析》

圖片描述

你們好,新一期的薦書欄目如期跟你們見面了。java

先來看看今天的主角是誰:《Python源碼剖析——深度探索動態語言核心技術》,2008年出版,做者 @陳儒 ,評分8.7分。python

是的,你沒看錯,出版年份2008年。這本書基於Python2.5,到了十年後3.7版本的年代,能夠說大部份內容已通過時了,並且,還可能缺失了不少關鍵內容。那你也許會問,一本過期的書,有啥好推薦的呢?下面且聽我給你慢慢道來。程序員

一個巧合,一份期待

在寫第一篇薦書《編寫高質量代碼改善 Python 程序的 91 個建議》的時候,我偶然發現知乎上有人說起,說 @賴勇浩 大大正在接手這本源碼剖析的新版本編寫,不少人留言說期待。我想起曾經看到,有人推薦過這本書,因而便去查了一下。微信

書的內容簡介中有這一段,我看了便以爲興趣滿滿:多線程

本書以CPython爲研究對象,在C代碼一級,深刻細緻地剖析了Python的實現。書中不只包括了對大量Python內置對象的剖析,更將大量的篇幅用於對Python虛擬機及Python高級特性的剖析。經過此書,讀者可以透徹地理解Python中的通常表達式、控制結構、異常機制、類機制、多線程機制、模塊的動態加載機制、內存管理機制等核心技術的運行原理,同時,本書所揭示的動態語言的核心技術對於理解其餘動態語言,如 Javascript、Ruby等也有較大的參考價值。

做爲一個半路上車,剛走出新手村的Pythoner,我正愁如何才能成爲一個優秀的Pythonista,這本書閃耀着絕世祕籍的光芒,我起初有點望而卻步,事後卻又躍躍欲試。app

那麼,新書啥時候上市呢?在華蟒用戶組 裏,正好有人問到這個消息,羣衆們紛紛表示翹首以待。不過,賴勇浩站出來回覆了:框架

看回復的時間,這事已通過去一年了......svn

雖然這個神祕的新做者拖稿了,但書的期待值並未所以減損,相反,這偏偏意味着新書上市之日更近了!說不定就在明年上半年了呢。趕在新書出版前,咱們薦書欄目先來安利一波,這絕對是一件有先見之明的事,喵喵,美滋滋~~~函數

一份提綱,一些建議

鋪墊了這麼多,接下來要好好說下這本書的內容了。如下內容僅針對08版書籍,等新版上市後,薦書欄目會對兩版的差別跟進介紹。源碼分析

全書主要分兩部分,第一部分(1-6章)剖析Python的幾大內建對象(如整數、字符串、列表、字典),涉及對象建立、維護、緩衝池、提高效率的機制等內容;第二部分(7-16章)剖析Python虛擬機,涉及虛擬機框架、通常表達式、控制流、函數機制、類機制、運行環境初始化、動態加載機制、多線程機制、內存管理機制等內容。

有道是,Python中萬物皆對象。而Python是用C語言實現的,C語言倒是典型的面向過程語言 ,那麼,它是如何實現」萬物皆對象「的呢?實際上,Python對象是C的結構體在堆上申請的一塊內存(包括連續內存與非連續內存),全部內建的類型對象都是被靜態初始化了的。

按照書中的分類,Python對象可分以下:

其中,Fundamental對象是指類型對象,Numeric對象是指數值對象,Sequence對象是指容納其它對象的序列集合對象,Mapping對象是相似於C++中map的關聯對象,Internal對象是Python虛擬機在運行時內部使用的對象。

還有一種分類方式,Python對象能夠分爲定長對象 與變長對象。從這些分類中能夠看出,Python對象之間存在着自然差別,那麼,不一樣對象的生命週期管理(建立、維護、使用、回收)、對象的多態、對象緩衝池、以及其它特有的機制,這些都是怎麼實現的呢?

書中第一部份內容就是對以上問題的回答。閱讀過程當中,我讀到了一些熟悉的內容,例如以前在《Python中的「特權種族」是什麼?》中發明的「特權種族」(例如神祕的[-5,256]數字、以及Intern機制的短字符串),它們在內建對象剖析的部分裏都有。閱讀的過程,就是從知其然,到知其因此然的過程,於我大有益處。

說實話,源碼分析的部分,對我來講太難了,由於C語言基礎早已交還給大學老師了......可是,閱讀第一部分的好處是,你沒必要徹底懂源碼,由於做者加了不少註釋,相關的分析過程也很詳盡。

至於書中的第二部分,我還不敢進入。這部分須要一些編譯原理知識、字節碼及虛擬機知識。留待從此繼續學習。

全書章節的編排結構特別清晰,已經提供了一份很好的學習路徑提綱。這裏,我還蒐集了一些閱讀建議,下面看看有什麼:

若是你在用一門高級語言,想了解語言的實現原理,這本書是你的必選;若是你是一個 C/C++ 程序員,想寫出高質量的程序,這本書也是你必選。—— @simonliu

須要說明的是,我不會向python語言的學習者推薦這本書,由於它不是一本python語言的教材。相反,做爲分析Python運行時機制的專著,書中充斥着有關C、C++的討論(我還讀到了有用java作爲比較的段落)。這不要求讀者是專業的C/C++程序員,可是至少應該可以讀懂C代碼,最好知道 C++ STL是怎麼回事。......我堅信,這本優秀的著做,值得譯爲英文,向全世界的C/C++/Python程序員推薦。——@膘

很好的講解Python源碼剖析的書籍,深刻講解了Python的各類特性是如何經過C語言實現的,對於想了解Python底層實現的程序員頗有幫助,講解的很詳細,不過看底層C實現看多了也確實容易乏味、消磨耐性,尤爲後面高級特性的剖析時,看起來愈發吃力、費勁。 目前先通讀了一遍,幫助本身瞭解了Python的很多特性和其底層機制,還有不少地方草草略過並不十分明白,往後實力更上一層樓時,再回來拜讀。 好書推薦!——@流星雲

源碼能夠不讀,這本書仍是值得讀的。——@賴勇浩

常備的手邊書,深刻了解Python的好書。——@清風

一份資源,更多福利

相信可以讀到這裏的讀者,都燃起了一些閱讀興趣,能夠「按圖索驥」去學習。電子學習資源不少,對於愛學習 的大家來講,這不是啥難事。豆瓣讀書、噹噹網和京東圖書上,也有電子書可購買。

可是,若是你想買紙質書,很差意思,早就絕版了。二手舊書的價格貴得嚇人,下面訊息給不差錢的同窗們參考下:

在中英文的Python書籍中,這本剖析源碼的書籍,多是絕無僅有的一本,就憑這點,怎麼推薦都不爲過。對於可能會很快上市的新書,則是怎麼期待都不爲過的。若是有小夥伴知道出版消息,懇請在後臺告知於我,不勝感激。

在薦書《黑客與畫家》的時候,咱們送出了一本精裝書福利。等到這本源碼剖析的新書上市時,送書福利確定會是大大的,你們拭目以待吧。固然,後續其它薦書的書目,也頗有可能會送福利,同樣不容錯過。因此,我要打個小廣告,還沒關注的小夥伴,趕忙掃描下方二維碼,馬上關注公衆號Python貓 ,關注咱們的薦書欄目,讓咱們一同窗習,一同進步,一同搶福利,喵喵喵~~~


本文原創並首發於微信公衆號【Python貓】,後臺回覆「愛學習」,免費得到20+本精選電子書。

往期薦書回顧:
第一期:《編寫高質量代碼改善 Python 程序的 91 個建議
第二期:《Python最佳實踐指南
第三期:《黑客與畫家

延伸閱讀:
陳儒博客:https://blog.csdn.net/balabal...
豆瓣書目:https://book.douban.com/subje...
Python源碼:https://svn.python.org/projects/
書評筆記:
https://book.douban.com/revie...
https://blog.csdn.net/lxlmycs...

相關文章
相關標籤/搜索