13.0 序 這一章我們就來看看python中類是怎么實現的,我們知道C不是一個面向對象語言,而python卻是一個面向對象的語言,那么在python的底層,是如何使用C來支持python實現面向對象的功能呢?帶着這些疑問,我們下面開始剖析python中類的實現機制。另外,在python2中 ...
. 序 在之前的章節中,我們考察的東西都是局限在一個模塊 在python中就是module 內。然而現實中,程序不可能只有一個模塊,更多情況下一個程序會有多個模塊,而模塊之間存在着引用和交互,這些引用和交互也是程序的一個重要的組成部分。本章剖析的就是在python中,一個模塊是如何加載 並引用另一個模塊的功能的。對於一個模塊,肯定要先從硬盤加載到內存。 . import前奏曲 我們以一個簡單的i ...
2020-01-06 18:28 0 694 推薦指數:
13.0 序 這一章我們就來看看python中類是怎么實現的,我們知道C不是一個面向對象語言,而python卻是一個面向對象的語言,那么在python的底層,是如何使用C來支持python實現面向對象的功能呢?帶着這些疑問,我們下面開始剖析python中類的實現機制。另外,在python2中 ...
的,當然也從Python的角度介紹了Python中的協程。 這一次我們說一下Python模塊的加載機制 ...
本系列是以陳儒先生的《python源碼剖析》為學習素材,所記錄的學習內容。不同的是陳儒先生的《python源碼剖析》所剖析的是python2.5,本系列對應的是python3.7,所以某些地方會和原著有出入,另外我在介紹的過程中會穿插大量的python代碼,不僅僅是介紹如何實現的,還會 ...
17.0 序 內存管理,對於python這樣的動態語言是至關重要的一部分,它在很大程度上決定了python的執行效率,因為在python的運行中會創建和銷毀大量的對象,這些都設計內存的管理。同理python還提供了了內存的垃圾回收(GC,garbage collection),將開發者從繁瑣 ...
楔子 在上一篇博客中,我們說了Python函數的底層實現,並且還演示了如何自定義一個函數,雖然這在工作中沒有太大意義,但是可以讓我們深刻理解函數的行為。此外我們還介紹了如何獲取函數的參數,而這一次我們就來看看函數如何調用的。 函數的調用 我們以一個非常簡單的函數為例,看看它的字節碼 ...
楔子 現在絕大部分的語言都實現了垃圾回收機制,這其中也包括Python,而不同的語言采用的垃圾回收算法也各不相同。那么,常見的垃圾回收算法都有哪些呢? 引用計數法(reference count): 記錄對象的被引用次數, 引用計數降為0時回收 標記-清除法(mark-sweep ...
楔子 在上一章中,我們介紹了Python虛擬機中常見的字節碼指令。但我們的流程都是從上往下順序執行的,在執行的過程中沒有任何變化,但是顯然這是不夠的,因為怎么能沒有流程控制呢。下面我們來看看Python所提供的流程控制手段,其中也包括異常檢測機制。 Python虛擬機中的if控制流 ...
楔子 我們之前分析了Python的核心--字節碼、以及虛擬機的剖析工作,但這僅僅只是一部分,而其余的部分則被遮在了幕后。記得我們在分析虛擬機的時候,曾這么說過: 當Python啟動后,首先會進行 "運行時環境" 的初始化,而關於 "運行時環境" 的初始化是一個非常復雜的過程 ...