python源码
初学者
GitHub - kennethreitz/pip-pop: Tools for managing requirements files.
GitHub - kennethreitz/envoy: Python Subprocesses for Humans™.
GitHub - kennethreitz/records: SQL for Humans™
GitHub - mitsuhiko/pluginbase: A simple but flexible plugin system for Python.
GitHub - mitsuhiko/pipsi: pip script installer
GitHub - mitsuhiko/unp: Unpacks things.
GitHub - chrisallenlane/cheat
GitHub - jek/blinker: A fast Python in-process signal/event dispatching system.
GitHub - mitsuhiko/platter: A useful helper for wheel deployments.
GitHub - kennethreitz/tablib: Python Module for Tabular Datasets in XLS, CSV, JSON, YAML, &c.
看代码主要是了解别人写代码的方式,语法实践这些内容。看完之后,你可以针对这些项目能解决的问题自己写个项目,写完之后和上述项目去对比一下,看看哪些方面做的不好。
进阶
进阶的时候就要阅读一些相对复杂的项目,它们能帮助你提升Python编程技巧:
faif/python-patterns。使用Python实现一些设计模式的例子。
pallets/werkzeug。flask的WSGI工具集。其中包含了实现非常好的LocalProxy、cached_property、import_string、find_modules、TypeConversionDict等。
bottlepy/bottle。阅读一个Web框架对Web开发就会有更深刻的理解,flask太大,bottle就4k多行,当然如果你有毅力和兴趣直接看flask是最好了的。
msiemens/tinydb。了解用Python实现数据库。
coleifer/peewee。了解ORM的实现。
pallets/click。click已经内置于在flask 0.11里,提供命令行功能,值得阅读。
mitsuhiko/flask-sqlalchemy。了解一个flask插件是怎么实现的。
除此之外Web开发者可以阅读一些相关的项目:
runscope/httpbin。使用flask,网站是httpbin(1): HTTP Client Testing Service。
jahaja/psdash。使用flask和psutils的获取Linux系统信息的面板应用。
pallets/flask-website。 flask官方网站应用。
pypa/warehouse。如果你使用pyramid,这个新版的PYPI网站,可以帮助你理解很多。
当然,2个学习flask重要的资源必须爆一爆:
GitHub - realpython/discover-flask: Full Stack Web Development with Flask。
The Flask Mega-Tutorial。 这个就是《Flask Web开发:基于Python的Web应用开发实战》的原始博客。
500lines
推荐一个非常厉害的项目 GitHub - aosabook/500lines: 500 Lines or Less, 它里面包含了22个由该领域的专家完成,用不到500行的代码实现一个特定功能的子项目。连Guido van Rossum都亲自来写基于asyncio爬虫了,Nick Coghlan、ajdavis也出场了。更具体的介绍可以看Python 的练手项目有哪些值得推荐? - 小小搬运工的回答。
其它
kennethreitz。requests和python-guide作者。他还有一个非常励志的故事,有兴趣的可以看 谁说程序员不是潜力股?
mitsuhiko。flask、Jinja2、werkzeug和flask-sqlalchemy作者。
sigmavirus24。flake8、pycodestyle(原pep8)、requests、urllib3等项目的主要贡献者和维护者。
ask。Celery及相关依赖的作者。
ajdavis。mongo-python-driver(pymongo)、tornado等项目的主要贡献者。
bitprophet。fabric、paramiko(Python的ssh库)作者。
前2个是公认的Python领域代码写的最好的、最有创意的工程师。
分类别
Web 框架:flask, tornado
HTTP: gunicorn, requests
Socket: shadowsocks
操作系统: subprocess, threading
黑魔法: SQLAlchemy, sh
都想学: 500 lines or less
怎么阅读开源项目源码
我基于个人兴趣和日常开发需要阅读过一些开源项目,我列一些比较通用的经验和感悟:
不要畏惧。我发现大家都经常会感叹XXX强大,YYY流行,无形中你会把它放在一个不可触及到的地位,感觉它很难,而令自己不敢去挑战它。其实是人就会产出bug,假如你发现它有问题,就应该抓住机会去验证它。这个过程中,它的神秘感也就消失了,有过这么几次经验你就有信心了。其次是不要怕你提交的PR被拒绝。这是非常正常的,我有很多PR是被拒绝的,尤其是给标准库提交的Patch,绝大多数都被拒绝了。
带着问题去阅读代码,这也是我认为最有效的方式。这会让你在阅读时候有个主线,比较有针对性。
断点调试。在Python代码中使用pdb一般不太好使,因为代码复杂的话,这种断点需要你使用多个n跳到对应的位置,我一般都是先抛出异常,然后使用pdb的up/down/n等命令调试。当然在目标位置添加一些print日志或注释部分代码然后直接使用exit()退出也是可以的。
善用文档,官网例子。阅读一个项目一开始会有点无从下手,那么就先好好这些内容,它们一般都是作者表达这个项目的第一个入口。quickstart、tutorial等内容中的最小化的例子其实就是最好的阅读入口,先去看这些引用的模块和调用的对应方法或者函数的对应实现,从下至上去阅读。
理解作者的思考方式。不同的项目要有不同的思考方式来阅读,不要拧着自己的习惯去阅读,这样会很累,得尝试接受别人的观点,甚至于改变自己。
阅读项目的早期版本。一些项目随着时间演进已经非常复杂了,读起来有难度,那么你可以回到项目的早期版本上,先去看相对简单地版本,然后设置几个时间点或者版本节点,渐进的来阅读。
记忆并绘制项目架构。项目就是一堆代码的组合,除了学习编程技巧,还要了解项目的架构决策,这对于未来自己写大型项目非常用用。这种理解越补充,你会对它就越来越清晰。
参与。如果只是看和思考而不参与,其实效果大打折扣。我建议要参与一些issue讨论、向作者提问、提PR添加新的功能、帮助改善文档等等。很多时候你理解的其实和作者是有冲突的,无论是你说服他和被他说服,对自己的成长都是很有帮助的。
Refer
https://blog.csdn.net/xiaoxianerqq/article/details/79296708
python源码的更多相关文章
- 读python源码--对象模型
学python的人都知道,python中一切皆是对象,如class生成的对象是对象,class本身也是对象,int是对象,str是对象,dict是对象....所以,我很好奇,python是怎样实现这些 ...
- VS2013编译python源码
系统:win10 手头有个python模块,是用C写的,想编译安装就需要让python调用C编译器.直接编译发现使用的是vc9编译,不支持C99标准(两个槽点:为啥VS2008都还不支持C99?手头这 ...
- 三种排序算法python源码——冒泡排序、插入排序、选择排序
最近在学习python,用python实现几个简单的排序算法,一方面巩固一下数据结构的知识,另一方面加深一下python的简单语法. 冒泡排序算法的思路是对任意两个相邻的数据进行比较,每次将最小和最大 ...
- 《python源码剖析》笔记一——python编译
1.python的架构: 2.python源码的组织结构: 3.windows环境下编译python:
- 转换器5:参考Python源码,实现Php代码转Ast并直接运行
前两个周末写了<手写PHP转Python编译器>的词法,语法分析部分,上个周末卡文了. 访问器部分写了两次都不满意,没办法,只好停下来,参考一下Python的实现.我实现的部分正好和Pyt ...
- python源码书籍
<Python源码剖析>一书现在很难买到,目前大部分都是电子书. 为了更好地利用Python语言,无论是使用Python语言本身,还是将Python与C/C++交互使用,深刻理解Pytho ...
- 类似py2exe软件真的能保护python源码吗
类似py2exe软件真的能保护python源码吗 背景 最近写了个工具用于对项目中C/C++文件的字符串常量进行自动化加密处理,用python写的,工具效果不错,所以打算在公司内部推广.为了防止代码泄 ...
- Python源码中的PyCodeObject
1.Python程序的执行过程 Python解释器(interpreter)在执行任何一个Python程序文件时,首先进行的动作都是先对文件中的Python源代码进行编译,编译的主要结果是产生的一组P ...
- Python源码学习(一)
考虑到性能的要求,我在工作中用的最多的是c/c++,然而,工作中又经常会有一些验证性的工作,这些工作对性能的要求并不高,反而对完成的效率要求更高,对于这样的工作,用一种开发效率高的语言是合理的想法,鉴 ...
- 【转】类似py2exe软件真的能保护python源码吗
类似py2exe软件真的能保护python源码吗 背景 最近写了个工具用于对项目中C/C++文件的字符串常量进行自动化加密处理,用python写的,工具效果不错,所以打算在公司内部推广.为了防止代码泄 ...
随机推荐
- git 基本命令操作
配置 Git 的相关参数. Git 一共有3个配置文件: 1. 仓库级的配置文件:在仓库的 .git/.gitconfig,该配置文件只对所在的仓库有效.2. 全局配置文件:Mac 系统在 ~/.gi ...
- linux 之实现定时任务
一.方式一 (1)命令行 的方法: 一.方式一 需求:每分钟执行一次/etc 目录的添加 到/tmp/a.txt 中 (1) touch a.txt创建文件 (2) crotab -e 进行任务的定制 ...
- HttpClient 释放连接
Release the Connection:释放连接 This is a crucial step to keep things flowing. We must tell HttpClient t ...
- nginx配置详解---学校资料
#配置worker进程运行用户 nobody也是一个linux用户,一般用于启动程序,没有密码 user nobody; #配置工作进程数目,根据硬件调整,通常等于CPU数量或者2倍于CPU数量 wo ...
- 关于cli打包至服务器出现的BUG(样式错乱,路径出错)解决方案
很久没来博客园了,今天给大家带来两个硬货bug,前端大牛可能不觉得是啥,但是对于没碰到过这问题的小菜鸟我来说还是很不错的 1.npm run build 至服务端的时候出现路径报错解决方案 ①.本地测 ...
- php和redis实现消息队列
php+redis消息队列是php+mysql性能不足时的一个中间间处理方案.通过这个中间的处理,保证的数据的可用性和准确性.用于服务器瞬间请求大,数据库压力大的情况.如并发量大导致的超卖.并发量大导 ...
- idea运行web项目乱码
windows下idea中web项目乱码,主要原因是服务器端乱码(执行webservlet的时候,编码格式改变),导致客户端的编码格式与webservlet传递过的编码格式不一致. 前端网页的编码,通 ...
- Java中如何判断两个对象是否相等(Java equals and ==)
原文https://www.dutycode.com/post-140.html 如何判断两个对象相等,这个问题实际上可以看做是如何对equals方法和hashcode方法的理解. 从以下几个点来理解 ...
- CentOS 添加环境变量的三种方法
在CentOS 系统上安装完 MATLAB 后,为了使用方便,需要将 matlab 命令加到系统命令中,如果在没有添加到环境变量之前,执行“matlab”命令时,则会提示命令不存在的错误,如下所示: ...
- 调试python 程序的几种方法总结
程序能一次写完并正常运行的概率很小,基本不超过1%.总会有各种各样的bug需要修正.有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误 ...