新到貨2本75折
Python源碼剖析︰深度探索動態語言核心技術

Python源碼剖析︰深度探索動態語言核心技術

  • 定價:419
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
  • 分享
 

內容簡介

作為主流的動態語言,Python不僅簡單易學、移植性好,而且擁有強大豐富的庫的支持。此外,Python強大的可擴展性,讓開發人員既可以非常容易地利用C/C++編寫Python的擴展模塊,還能將Python嵌入到C/C++程序中,為自己的系統添加動態擴展和動態編程的能力。

  為了更好地利用Python語言,無論是使用Python語言本身,還是將Python與C/C++交互使用,深刻理解Python的運行原理都是非常重要的。本書以CPython為研究對象,在C代碼一級,深入細致地剖析了Python的實現。書中不僅包括了對大量Python內置對象的剖析,更將大量的篇幅用于對Python虛擬機及Python高級特性的剖析。通過此書,讀者能夠透徹地理解Python中的一般表達式、控制結構、異常機制、類機制、多線程機制、模塊的動態加載機制、內存管理機制等核心技術的運行原理,同時,本書所揭示的動態語言的核心技術對于理解其他動態語言,如Javascript、Ruby等也有較大的參考價值。

  本書適合于Python程序員、動態語言愛好者、C程序員閱讀。
 

目錄

第0章 PYTHON源碼剖析--編譯PYTHON
 0.1 PYTHON總體架構
 0.2 PYTHON源代碼的組織
 0.3 WINDOWS環境下編譯PYTHON
 0.4 UNIX/LINUX環境下編譯PYTHON
 0.5 修改PYTHON源代碼
 0.6 通往PYTHON之路
 0.7 一些注意事項
第1部分 PYTHON內建對象
 第1章 PYTHON對象初探
  1.1 PYTHON內的對象
   1.1.1 對象機制的基石——PyObject
   1.1.2 定長對象和變長對象
  1.2 類型對象
   1.2.1 對象的創建
   1.2.2 對象的行為
   1.2.3 類型的類型
  1.3 PYTHON對象的多態性
  1.4 引用計數
  1.5 PYTHON對象的分類
 第2章 PYTHON中的整數對象
  2.1 初識PYINTOBJECT對象
  2.2 PYINTOBJECT對象的創建和維護
   2.2.1 對象創建的3種途徑
   2.2.2 小整數對象
   2.2.3 大整數對象
   2.2.4 添加和刪除
   2.2.5 小整數對象池的初始化
  2.3 HACK PYINTOBJECT
 第3章 PYTHON中的字符串對象
  3.1 PYSTRINGOBJECT與PYSTRING_TYPE
  3.2 創建PYSTRINGOBJECT對象
  3.3 字符串對象的INTERN機制
  3.4 字符緩沖池
  3.5 PYSTRINGOBJECT效率相關問題
  3.6 HACK PYSTRINGOBJECT
 第4章 PYTHON中的LIST對象
  4.1 PYLISTOBJECT對象
  4.2 PYLISTOBJECT對象的創建與維護
   4.2.1 創建對象
   4.2.2 設置元素
   4.2.3 插入元素
   4.2.4 刪除元素
  4.3 PYLISTOBJECT對象緩沖池
  4.4 HACK PYLISTOBJECT
 第5章 PYTHON中的DICT對象
  5.1 散列表概述
  5.2 PYDICTOBJECT
   5.2.1 關聯容器的entry
   5.2.2 關聯容器的實現
  5.3 PYDICTOBJECT的創建和維護
   5.3.1 PyDictObject對象創建
   5.3.2 PyDictObject中的元素搜索
   5.3.3 插入與刪除
   5.3.4 操作示例
  5.4 PYDICTOBJECT對象緩沖池
  5.5 HACK PYDICTOBJECT
 第6章 最簡單的PYTHON模擬——SMALL PYTHON
  6.1 SMALL PYTHON
  6.2 對象機制
  6.3 解釋過程
  6.4 交互式環境
第2部分 PYTHON虛擬機
 第7章 PYTHON的編譯結果--CODE對象與PYC文件
  7.1 PYTHON程序的執行過程
  7.2 PYTHON編譯器的編譯結果--PYCODEOBJECT對象
   7.2.1 PyCodeObject對象與pyc文件
   7.2.2 Python源碼中的PyCodeObject
   7.2.3 pyc文件
   7.2.4 在Python中訪問PyCodeObject對象
  7.3 PYC文件的生成
   7.3.1 創建pyc文件的具體過程
   7.3.2 向pyc文件寫入字符串
   7.3.3 一個PyCodeObject,多個PyCodeObject
  7.4 PYTHON的字節碼
  7.5 解析PYC文件
 第8章 PYTHON虛擬機框架
  8.1 PYTHON虛擬機中的執行環境
   8.1.1 Python源碼中的PyFrameObject
   8.1.2 PyFrameObject中的動態內存空間
   8.1.3 在Python中訪問PyFrameObject對象
  8.2 名字、作用域和名字空間
   8.2.1 Python程序的基礎結構——module
   8.2.2 約束與名字空間
   8.2.3 作用域與名字空間
  8.3 PYTHON虛擬機的運行框架
  8.4 PYTHON運行時環境初探
 第9章 PYTHON虛擬機中的一般表達式
  9.1 簡單內建對象的創建
  9.2 復雜內建對象的創建
  9.3 其他一般表達式
   9.3.1 符號搜索
   9.3.2 數值運算
   9.3.3 信息輸出
 第10章 PYTHON虛擬機中的控制流
  10.1 PYTHON虛擬機中的IF控制流
   10.1.1 研究對象--if_control.py
   10.1.2 比較操作
   10.1.3 指令跳躍
  10.2 PYTHON虛擬機中的FOR循環控制流
   10.2.1 研究對象——for_control.py
   10.2.2 循環控制結構的初始化
   10.2.3 迭代控制
   10.2.4 終止迭代
  10.3 PYTHON虛擬機中的WHILE循環控制結構
   10.3.1 研究對象——while_control.py
   10.3.2 循環終止
   10.3.3 循環的正常運轉
   10.3.4 循環流程改變指令之continue
   10.3.5 循環流程改變指令之break
  10.4 PYTHON虛擬機中的異常控制流
   10.4.1 Python中的異常機制
   10.4.2 Python中的異常控制語義結構
 第11章 PYTHON虛擬機中的函數機制
  11.1 PYFUNCTIONOBJECT對象
  11.2 無參函數調用
   11.2.1 函數對象的創建
   11.2.2 函數調用
  11.3 函數執行時的名字空間
  11.4 函數參數的實現
   11.4.1 參數類別
   11.4.2 位置參數的傳遞
   11.4.3 位置參數的訪問
   11.4.4 位置參數的默認值
   11.4.5 擴展位置參數和擴展鍵參數
  11.5 函數中局部變量的訪問
  11.6 嵌套函數、閉包與DECORATOR
   11.6.1 實現閉包的基石
   11.6.2 閉包的實現
   11.6.3 Decorator
 第12章 PYTHON虛擬機中的類機制
  12.1 PYTHON中的對象模型
   12.1.1 對象間的關系
   12.1.2 和
  12.2 從TYPE對象到CLASS對象
   12.2.1 處理基類和type信息
   12.2.2 處理基類列表
   12.2.3 填充tp_dict
  12.3 用戶自定義CLASS
   12.3.1 創建class對象
  12.4 從CLASS對象到INSTANCE對象
  12.5 訪問INSTANCE對象中的屬性
   12.5.1 instance對象中的__dict__
   12.5.2 再論descriptor
   12.5.3 函數變身
   12.5.4 無參函數的調用
   12.5.5 帶參函數的調用
   12.5.6 Bound Method和Unbound Method
  12.6 千變萬化的DESCRIPTOR
第3部分 PYTHON高級話題
 第13章 PYTHON運行環境初始化
  13.1 線程環境初始化
   13.1.1 線程模型回顧
   13.1.2 初始化線程環境
  13.2 系統MODULE初始化
   13.2.1 創建__builtin__ module
   13.2.2 創建sys module
   13.2.3 創建__main__ module
   13.2.4 設置site-specific的module的搜索路徑
  13.3 激活PYTHON虛擬機
   13.3.1 交互式運行方式
   13.3.2 腳本文件運行方式
   13.3.3 啟動虛擬機
   13.3.4 名字空間
 第14章 PYTHON模塊的動態加載機制
  14.1 IMPORT前奏曲
  14.2 PYTHON中IMPORT機制的黑盒探測
   14.2.1 標準import
   14.2.2 嵌套import
   14.2.3 import package
   14.2.4 from與import
   14.2.5 符號重命名
   14.2.6 符號的銷毀與重載
  14.3 IMPORT機制的實現
   14.3.1 解析module/package樹狀結構
   14.3.2 加載module/pakcage
   14.3.3 from與import
  14.4 PYTHON中的IMPORT操作
   14.4.1 import module
   14.4.2 import package
   14.4.3 from & import
   14.4.4 import & as
   14.4.5 reload
   14.4.6 內建module︰imp
  14.5 與MODULE有關的名字空間問題
 第15章 PYTHON多線程機制
  15.1 GIL與線程調度
  15.2 初見PYTHON THREAD
  15.3 PYTHON線程的創建
   15.3.1 建立多線程環境
   15.3.2 創建線程
  15.4 PYTHON線程的調度
   15.4.1 標準調度
   15.4.2 阻塞調度
  15.5 PYTHON子線程的銷毀
  15.6 PYTHON線程的用戶級互斥與同步
   15.6.1 用戶級互斥與同步
   15.6.2 Lock對象
  15.7 高級線程庫——THREADING
   15.7.1 Threading Module概述
   15.7.2 Threading的線程同步工具
   15.7.3 Threading中的Thread
 第16章 PYTHON的內存管理機制
  16.1 內存管理架構
  16.2 小塊空間的內存池
   16.2.1 Block
   16.2.2 Pool
   16.2.3 arena
   16.2.4 內存池
  16.3 循環引用的垃圾收集
   16.3.1 引用計數與垃圾收集
   16.3.2 三色標記模型
  16.4 PYTHON中的垃圾收集
   16.4.1 可收集對象鏈表
   16.4.2 分代的垃圾收集
   16.4.3 Python中的標記-清除方法
   16.4.4 垃圾收集全景
   16.4.5 Python中的gc模塊
   16.4.6 總結
 

Python,我想已經不再是個陌生的詞了,越來越多的人開始學習它,使用它,宣傳它,甚至用它找到了工作。如果你了解Python,那麼我想問一下,你對它有多了解呢?它是一種什麼語言?如何實現的?有哪些對象,它們是如何處理的?你了解Python的虛擬機嗎?了解它的運行環境嗎?其實作為初學者或只是使用者,你的確不必了解這麼多細節的內容,但是探究事物的原理,分析底層細節卻也是許多人成為高手、“老鳥”的原因,因為你知道別人不知道的東西,掌握了別人不了解的技術,這些內容使得你的見解、分析,甚至作品都可能超過別人。那麼本書就向你提供了一個了解Python底層細節的機會,你可以沿著作者的思路和角度去體會Python的工作原理和底層的細節,一點一點地了解Python源碼的精妙之處,有助于更好地掌握Python並編寫出高質量的程序。

本書的內容深入到Python的方方面面,像Python的對象實現機制是如何用C來表現的;對象的特性是如何實現的;對象是如何管理的;不同刈象,如int、str、dict、list等的處理;Python的虛擬機框架、作用域的實現;運行時環境,pyc文件,類機制等。還有一些高級話題,如內存管理,GIL(Global Interpreter Lock)與多線程,模塊動態加載等。

在接觸到本書之前,我已經在作者的Blog上見到過部分內容,那時已經被作者不懈的毅力和深厚的功力折服。說實話,由于經常接觸Python,對于原本熟悉的C語言也越來越陌生,更不要說去“啃”Python的C代碼了。而Robert Chen可以從源碼巾進行有條理的分析和整理,並終于出版此書。這不僅讓人敬佩,更讓廣大的Python愛好者受益多多。因此,當出版社希望我為本書作一個推薦序時,我毫不猶豫地答應下來。

第一次見到Robert Chen還是在CPUG的一次會課上,那時Robert Chen給大家帶來一個主題為“Python作用域與名字空間”的講座,讓在座的Pythoner對Python的作用域機制有了更深入的理解,講座效果非常好,討論也很熱烈。他從源碼的角度講述了Python的一些規則,使得大家的理解不再停留在形式上或規則上,而達到了本質或實現的層次,讓我們“知其然,更知其所以然”。

如果你是一位熱心的Pythoner,想必會知道中文Python的郵件列表(http︰groups.google.com/group/python-cn),從上面對有些問題的回復中,你會發現Robert Chen總是從源碼及字節碼實現的角度來回答問題,非常有說服力。因此當許多Pythdn愛好者得知Robert Chen將出版此書時,都非常盼望,現在這本書終于出版,大家都深感慶幸!

本書不僅僅是高水平、高質量的一本書,縱觀國內外與Python相關的書籍,它也是第一本從源碼角度寫作的書,所以意義非常。目前國內原創的Python書籍還不多,就我所知國內已經出版的兒本Python方面的書尚不能滿足讀者需求,而本書應該不會讓你失望。

不過本書應該不是面向初學者的書,因為它涉及了許多較深的內容和知識,建議讀者應先掌握像C語言、數據結構、操作系統、編譯原理等方面的基礎知識,並且具備一定的編程經驗,才能更好地理解書的內容。

再次感謝Robert Chen帶給大家的這份禮物!
 

詳細資料

  • ISBN:9787121068744
  • 規格:平裝 / 480頁 / 普通級 / 單色印刷 / 初版
  • 出版地:中國

最近瀏覽商品

 

相關活動

  • 2024曬書市集69元起,滿萬再回饋1000元E-Coupon!
 

購物說明

溫馨提醒您:若您訂單中有購買簡體館無庫存/預售書或庫存於海外廠商的書籍,建議與其他商品分開下單,以避免等待時間過長,謝謝。

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 中信5折起
  • 曬書節
  • 哲學│歷史│文學 79折起