如果一定要推荐一些 python 的源码去读,我的建议是标准库里关于网络的代码。从 SocketServer 开始,补上 socket
模块的知识,熟悉 TCP/UDP 编程,然后了解 Mixin 机制的最佳示例
SocketServer.{ForkingMixIn|ThreadingMixIn},借这个机会了解 thread/threading
模块,这时会对并发量提出新的要求,就可以读 select 模块,开始对 select/{epoll|kqueue}
有深刻理解,搞懂以后就可以接触一下异步框架 asyncore 和 asynchat。这时开始出现分岔。如果是做 game 等以 TCP/UDP
协议为基础的应用,可以去读 greenlet 和 gevent,如果是做 web,则走下一条路。
做 web,读
BaseHTTPServer、SimpleHTTPServer 和 CGIHTTPServer,读
cgi/cgitb,自己随意写框架,读cookielib,读 wsgiref,这时候自己写一个简便的 web framework 就 so
easy 了,老板再也不担心你写 web 了,选择 flask/web.py/django/pyramid 都心中有数了。因为走的是 web
的路,所以难免要调用一下别人的 api,搞懂一下 httplib/urllib/urllib/urlparse。
大神 Armin Ronacher的博客 Blog | Armin Ronacher's Thoughts and Writings , 有很多代码的经验和技巧分享, 他写的一些库如 flask, werkzeug 可读性都很好
kennethreitz 写的一系列 python lib for human, 如 requests, tablib 等
gunicorn 的作者benoitc 写的python代码基本都比较 pythonic https://github.com/benoitc , 个人很喜欢读他的代码
不超过500 行代码的各种项目(以 Python 为主,不全是 Python) GitHub - aosabook/500lines: 500 Lines or Less
至于那些 web 框架如 pyramid, django 之类不是很推荐初学者去阅读,过于庞大且用了一些高级trick等让初学者难以理解