为了账号安全,请及时绑定邮箱和手机立即绑定
慕课专栏

目录

索引目录

Python 源码深度剖析

原价 ¥ 68.00

立即订阅
01 开篇词:为什么要钻研 Python 源码?
更新时间:2020-06-19 11:20:47
没有引发任何行动的思想都不是思想,而是梦想。 —— 马丁

为什么要钻研 Python 源码

大家好,我是 fasionchan ,资深 Python 工程师,曾就职于 腾讯网易游戏蚂蚁金服 等互联网公司。

经过多年的摸爬滚打,我对 Python 开发有一些自己的体会,深知源码研究的意义。我就职于网易游戏时,曾在内部开展 Python源码剖析 系列技术分享,收获颇多。

此外,我从 2014 年便开始参与公司技术人才的招聘工作,经常在面试中考察候选人对 Python 内部原理的理解,发现源码是区分度较大的话题之一。我见过不少候选人底层功底薄弱,知其然而不知其所以然,因而与工作机会无缘,非常可惜。

随着人工智能等技术的兴起,Python 正风靡世界!最新的 TIOBE 编程语言排行榜上,Python 已经稳居前 3 位!正如硬币的两面,这对 Python 工程师来说既意味着 机遇 ,也带来一些 挑战

图片描述

一方面,采用 Python 技术栈的公司越来越多,掌握 Python 的工程师不愁没有工作机会。

另一方面,大量的工程师浩浩荡荡加入 Python 大军,竞争日益激烈。如果你想要从众人中脱颖而出,就必须拿出自己的看家本领。

不少初学者觉得,能用 Python 完成开发需求就行了,没必要深入学习。这个观点是非常错误的,掌握语法只是万里长征第一步。

程序能跑起来,并不意味着程序能高效地运行,实际上这两者有天壤之别。制约程序效率的因素很多,语言特性、运行机制、算法原理、操作系统环境等等,只掌握皮毛显然无法驾驭这些。

我见过不少初级工程师,开发出来的程序逻辑上没有问题,但是性能低下。程序上线就承受巨大压力,甚至引发性能故障,严重影响个人业绩。

归根到底,还是在底层原理上吃亏。不管学习什么技术,浅尝辄止肯定是不行的。因此,要么满足于 Python 语法,沦为 API 调用侠;要么,彻底掌握 Python 的内部原理。

研究过源码的我,深知这其中的艰辛——成千上万行代码,多少个日日夜夜以及笔记本里的一个个草图……如果能够将心得分享出来,相信对后来者会有所帮助。因此,当慕课网的老师跟我沟通时,我们一拍即合。

那么,这个专栏都介绍些什么内容呢?

第一部分, 开篇 。讨论源码学习对提升开发能力的重要意义,结合“小菜”的经历介绍 Python 工程师的成长历程。

第二部分, 对象模型 。介绍 Python 面向对象理论体系,明确“ ”和“ 对象 ”在 Python 中的表现形式。通过源码,分析对象的 内存布局 ,研究对象的 生命周期 ,初步揭开对象的面纱。

第三部分, 内建对象 。涵盖 floatintbytesstrlistdict 等内建对象的实现细节,重点突出每种对象的 数据结构 以及背后的 算法思想 ,并结合 工程实践 讲解内建对象的 妙用

第四部分, 虚拟机 。先介绍 Python 程序的执行过程以及 字节码 的结构;然后介绍 Python 虚拟机 的运行机制,以及 名字空间 等运行时上下文;最后讲解 GIL 全局锁 对虚拟机的影响并探索应对之策。

第五部分, 函数机制 。探索函数从 代码 转化成函数 对象 的所有步骤,并以 Python 代码模仿这个过程。重点讲解 嵌套函数闭包 以及 装饰器 这些面试必问概念,并结合工程实践介绍 函数式编程装饰器 的高级用法。

第六部分, 类机制 。探索类从 代码 转化为 对象进而创建 实例 对象的所有步骤,并以 Python 代码进行模拟。重点讲解 继承机制属性查找 等高频面试知识点,以及 魔术方法元类 在程序开发中的妙用。

第七部分, 生成器与协程 。讨论 生成器 的高级用法,并以 字节码 讲解它的运行原理。基于 生成器 ,动手设计一个协程库,加深对协程运行机制的理解。结合工程实践,讲解用 asyncio 构建 高并发应用 的技巧。

第八部分, 内存管理机制 。结合 Python 特色全面讲解 内存池引用计数标记删除分代回收 等关键技术。理论联系实际,以一个真实案例介绍工程实践中排查并解决 内存泄露 问题的方法论。

第九部分, 总结 。回顾专栏内容,在读懂 Python 基础上,追求有 Python 格调 的代码设计技巧。

那么,学习本专栏学要具备哪些基础知识呢?

基本的 Python 开发能力是必须的,不需要特别深入,能独立编写程序即可。有一定的 C 语言基础更好,没有也不打紧。专栏从最简单的源码入手,逐步深入,并在必要地方补充介绍相关 C 语言知识。大家不必恐惧 C 语言,专栏精心编排,并不拘泥于繁缛的代码细节,总体通俗易懂。

此外,专栏附带大量的图表,详尽地描绘了 Python 内部各种数据结构间的关系。例如,list 对象的内部结构图:

图片描述

相信在这些图表的帮助下,你可以轻松地理解原本很深奥的源码。虽然绘制这些图表花了我大量的时间,但这一切都是值得的。希望我一个人的时间付出,能帮更多的人节约学习时间,起到事半功倍的效果。诚如是,则不胜荣幸!

著名技术作家侯捷在《STL源码剖析》中说过:源码之前,了无秘密。源码就像武功秘籍,虽然有时难懂如天书;可一旦参透,便掌握绝世武功的奥妙!感恩学生时代花了无数日夜苦读《STL源码剖析》的自己!

源码之前,了无秘密!与诸君共勉!

}
立即订阅 ¥ 68.00

你正在阅读课程试读内容,订阅后解锁课程全部内容

千学不如一看,千看不如一练

手机
阅读

扫一扫 手机阅读

Python 源码深度剖析
立即订阅 ¥ 68.00

举报

0/150
提交
取消