课程亮点
- 了解Python运行机制和设计思想;
- 熟悉背后的数据结构和算法原理;
- 结合工程实际,掌握高效程序设计之道;
- 高级面试知识点,求职更自信;
- 大量图表辅助学习,难点知识轻松拿下。
课程简介
- 能用Python完成开发需求,但是经常调用各种库,不懂更深的原理?
- 开发出来的程序逻辑上没有问题,但是性能不够好?
- 想争取更好的工作机会,面试却败在了内部原理上?
到底如何才能提升我的 Python 开发水平,向更高一级的岗位迈进?如果你有这些问题或者疑惑,那么首先恭喜你,打开了这门为你而写的专栏。
我是 fasionchan,资深 Python 研发工程师,曾就职于腾讯、网易游戏、蚂蚁金服等一线互联网公司。经过多年的摸爬滚打,我对 Python 开发有一些自己的体会。在网易就职期间,我便在内部开展Python 源码剖析系列技术分享,收获了不少好评。
我们都知道,程序能跑起来,并不意味着程序能高效地运行,实际上这两者有天壤之别。制约程序效率的因素很多,语言特性、运行机制、算法原理、操作系统环境等等,只掌握皮毛显然无法驾驭这些。
在我看来,要全方位掌握以上内容,最快速有效的办法就是进行源码解读,吃透底层原理。著名技术作家侯捷在《STL源码剖析》中说过:“源码之前,了无秘密。”源码就像武功秘籍,虽然有时难懂如天书;可一旦参透,便掌握绝世武功的奥妙!
源码如此有用,但研究源码也异常艰辛,我自己深知其中的辛苦——成千上万行代码,多少个日日夜夜的钻研,笔记本里的一个个草图……如果没有足够的时间和韧劲,独自坚持并不容易。
为了帮助更多人,我花费了大量时间准备这门 Python 源码剖析课,用从业多年的经验和心得,带领大家一起,解读 Python 内部原理。课程中附带了大量详尽的图表,相信在这些图表的帮助下,你可以轻松地理解原本很深奥的源码。例如,list 对象的内部结构图:
通过这门专栏的学习,你将掌握以下内容:Python 对象模型及对象内存布局;内建对象的数据结构及算法原理;Python 虚拟机的运行机制及字节码;协程技术原理、高并发程序设计技巧;内存管理和垃圾回收方面的关键技术;Python 高效程序设计之道。
源码之前,了无秘密!拒做API调用侠,向高级Python研发工程师迈进!
讲师介绍
fasionchan,资深 Python 研发工程师,曾就职于腾讯、网易游戏、蚂蚁金服等一线互联网公司。具备多年研发及招聘经验,在大数据量、高并发后台系统设计方面见解独到。技术栈非常全面,涵盖前后端主流架构,包括:flask、MySQL、MongoDB、Kafka、RabbitMQ、Docker、React 等。
课程模块
本专栏共 9 部分 45 小节,具体划分如下:
第一部分,开篇。
讨论源码学习对提升开发能力的重要意义,结合“小菜”的经历介绍 Python 工程师的成长历程。
第二部分,对象模型。
介绍 Python 面向对象理论体系,明确“ 类 ”和“ 对象 ”在 Python 中的表现形式。通过源码,分析对象的内存布局,研究对象的生命周期。
第三部分,内建对象。
涵盖 float 、int 、bytes 、str 、list 、dict 等内建对象的实现细节,重点突出每种对象的数据结构以及背后的算法思想,并结合工程实践讲解内建对象的妙用。
第四部分,虚拟机。
介绍 Python 程序的执行过程以及字节码的结构;Python 虚拟机 的运行机制,名字空间等运行时上下文,GIL 全局锁对虚拟机的影响并探索应对之策。
第五部分,函数机制。
探索函数从代码转化成函数对象的所有步骤,并以 Python代码模仿这个过程。重点讲解嵌套函数、闭包以及装饰器这些面试必问概念,并结合工程实践介绍函数式编程和装饰器的高级用法。
第六部分,类机制。
探索类从代码转化为类对象进而创建实例对象的所有步骤,并以 Python 代码进行模拟。重点讲解继承机制、属性查找等高频面试知识点,以及魔术方法、元类在程序开发中的妙用。
第七部分,生成器与协程。
讨论生成器的高级用法,并以字节码讲解它的运行原理。基于生成器,动手设计一个协程库,加深对协程运行机制的理解。结合工程实践,讲解用 asyncio 构建高并发应用的技巧。
第八部分,内存管理机制。
结合 Python 特色全面讲解内存池、引用计数、标记删除、分代回收等关键技术。理论联系实际,以一个真实案例介绍工程实践中排查并解决内存泄露问题的方法论。
第九部分,总结。
回顾专栏内容,在读懂 Python 基础上,追求有 Python 格调 的代码设计技巧。
- 期望进阶的 Python 初、中级工程师;
- 希望通过大厂面试的求职者;
- 对原理充满好奇心的 Python 爱好者;
- 有一定 Python 基础的在校学生。
- 本专栏为图文形式内容服务,共计 45 小节,上线时间为 2020 年 5 月 12 日,预计 2020 年 9 月 12 日更新完成;
- 本专栏更新时间为每周更新篇(法定节假日顺延),形式为图文;
- 订阅成功后,用户即可通过慕课网 PC 端、App 端、WAP 端享有永久阅读的权限;
- 慕课专栏为虚拟内容服务,订阅成功后概不退款;
- 在专栏阅读过程中,如有任何问题,请邮件联系kf@imooc.com;
- 慕课专栏版权归本平台所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表,违者将依法追究责任。
gmdzy2010
我觉得这68块钱是我用python三四年以来花在学习上最!踏!马!值得的钱,sorry爆粗口额
gmdzy2010
花两天时间完整过了一遍,是非常难得的对的起题目中“深入”二字的作品,也非常羞愧自己之前一直觉得很熟悉Python了,其实差得太远了,源码都没有读多少。恰好前段时间刚学习完《数据结构与算法:Python语言实现》、《流畅的Python》和《Python Cookbook第三版》,正要硬着头皮自己啃Python源码的时候,发现了这个宝藏,真的一下子解决了很多疑问,酣畅淋漓。接下来还得仔细琢磨一下前文中不懂的细节,以便真正掌握。希望能出版成一本书,那可又多了一本经典的Python书了。
Onlined
想问下作者,研究源码有什么用,已经连续看了一周了感觉特别枯燥乏味,讲的有些东西源码中找不到对应的代码,当然讲的这些应该说的要有C语音基础的前提下才能看明白吧!对于没有C语言基础的感觉看了收获不是很大,因为确实吸收率比较低有时候感觉在浪费时间,您有什么建议吗 对于研究源码
讲师回答 / fasionchan
源码研究是能力进阶的必由之路,就像开篇中“小菜”经历的那样,有些问题不了解底层源码实现是无法解决的。当然了,如果满足于需求搬运工,那另当别论。想必这不是您想要的。