正在加载中...
扫码关注慕课网服务号
干货分享
定期活动
课程优惠
专栏福利
官方优惠福利活动一手掌握,关注慕课网(ID:imooc-com),和50万+程序员一起成长!
本专栏知识点梳理
1.更多Python进阶课程:
2.慕课好评Python入门好课:
下载慕课网APP
更好的体验,让阅读随处可得
扫描二维码,下载慕课网APP
- Python 源码深度剖析
如无法下载使用图片另存为
下载海报
gmdzy2010
我觉得这68块钱是我用python三四年以来花在学习上最!踏!马!值得的钱,sorry爆粗口额
gmdzy2010
花两天时间完整过了一遍,是非常难得的对的起题目中“深入”二字的作品,也非常羞愧自己之前一直觉得很熟悉Python了,其实差得太远了,源码都没有读多少。恰好前段时间刚学习完《数据结构与算法:Python语言实现》、《流畅的Python》和《Python Cookbook第三版》,正要硬着头皮自己啃Python源码的时候,发现了这个宝藏,真的一下子解决了很多疑问,酣畅淋漓。接下来还得仔细琢磨一下前文中不懂的细节,以便真正掌握。希望能出版成一本书,那可又多了一本经典的Python书了。
Onlined
想问下作者,研究源码有什么用,已经连续看了一周了感觉特别枯燥乏味,讲的有些东西源码中找不到对应的代码,当然讲的这些应该说的要有C语音基础的前提下才能看明白吧!对于没有C语言基础的感觉看了收获不是很大,因为确实吸收率比较低有时候感觉在浪费时间,您有什么建议吗 对于研究源码
讲师回答 / fasionchan
源码研究是能力进阶的必由之路,就像开篇中“小菜”经历的那样,有些问题不了解底层源码实现是无法解决的。当然了,如果满足于需求搬运工,那另当别论。想必这不是您想要的。
weixin_慕雪1290746
这个专栏太棒了!居然没有早点发现!之前读源码的一些疑惑都茅塞顿开!
讲师回答 / fasionchan
酒香奈何巷子深……亲觉得不错,不妨帮忙宣传一下哈
纪老猴子_2020
今年由于工作原因,接触到Python语言以及Python C API,需要通过网卡提供的DMA技术,使得网卡可以直接读取Python维护的内存中的数据,工作过程中感觉Python这种语言很有意思,很想了解Python内部的实现机制。8月底,微博上偶然机会看到老师的课程,果断下手;现在9月底,学完了老师的全部课程,接下来我将按照老师的指导,按照老师提供的思路,开始阅读Python源码,谢谢老师。
慕粉7273994
好文 在网上翻来覆去找都是互相复制黏贴的东西 这种文章太难得了
皮蛋它兄弟
每期都在跟着学,马上就要讲完了,总有一种意犹未尽的感觉。希望能出更多python深层次理论及技术的文章。
weixin_慕UI0052680
太棒了! 对于魔术方法有没有更为完整的介绍?另外十分期待协程和编程风格的更新
讲师回答 / fasionchan
既然亲有需要,我先将这个话题加入写作计划,敬请关注「小菜学编程」~ Python官网上有个关于数据模型的文档,里面对魔术方法有相当详细的介绍,亲可以先看看:https://docs.python.org/3/reference/datamodel.html 。 余下内容我正在马不停蹄创作中,不日即可全部完成~
weixin_慕UI0052680
最近正在写一个数据表处理的类,每种数据的表头不一样,就想着父类若能特性化处理不同表格就太好了,实现之后发现只能通过子类传递表格的表头元组,方法定义在父类,当时内心就觉得无比别扭……而且万一子类没有定义列名属性一定就会死翘翘,当时也想到了直接将父类变成一个元类,子类的所有方法都由元类直接生产,所以元类的init被我定义的超长,最后虽然实现了目的,但是代码丑的不忍直视……文章里这处理方式,相比之下简直太简洁了,直接可以拿去改写我最初版本的父类
讲师回答 / fasionchan
哈哈,对卓越的追求永无止境~ 亲还可以看看标准库abc模块中,里面可能有一些东西可以直接拿来用,不用再造轮子,例如:abc. abstractmethod 。
fgdgdfgfdgfd
一年前阅读过关于源码剖析的书, 不过是基于Python2.5的, 很高兴遇到了Python3.x的源码剖析, 正在对着源码一点一点剖析, 感谢老师出了这个专栏。 但还是遇到了一个问题, 记得您说: "那么,被删除的存储单元如何复用呢?Python 压根就没想费这个劲,直接使用新的不就好了吗?"。 不过我隐约记得之前在看那本书的时候, 记得书上画了一张图, 描述entry的unused态、active态、dummy态三者的关系。dummy态无法转为unused态, 但dummy态和active态的entry之间的关系是一个双向箭头。 可不可以这样理解,Python默认是不会管处于dummy态的entry的, 只是做了一个逻辑删除, 但是内存还在占用这。 如果来了一个新的entry, 并且没有发生冲突, 那么Python就存在新的位置上。但如果发生了冲突, 沿着"冲突探测链"查找的时候, 碰巧发现了一个处于dummy态的entry, 那么就把这个处于dummy态的entry给换成新存储的entry。 此时entry由dummy态变成了active态, 只不过此时不一定是同一个entry了。可以这样理解吗
讲师回答 / fasionchan
完全正确。dummy状态其实也是特殊的unused,之所以不能转成直接转成unused是因为需要维护冲突探测链。另外,Python 3内建对象与Python 2相比变化很大,特别是dict、str等对象,学习建议以最新版本源码为准。