python 代码阅读和有趣的项目推荐
2017-07-28 tech python 12 mins 4321 字
做个记录看看。
个人收集的一些好玩项目和文章
(未完待续)以下都是转载
Python之禅
个人推荐看 Kenneth Reitz 大神的成名之作 Requests,感受一下什么是真正的Pythonic代码,什么是 Keep It Simple and Stupid
有网友已经整理了一份Requests源码阅读清单,内容幽默诙谐有趣,推荐看一看
- Requests v0.2.0 Birth! 2016-03-14
- Requests v0.3.0 Be frinendly 2016-03-16
- Requests v0.4.0 Amazing tour 2016-03-17
- Requests v0.5.0 Context Manager 2016-03-18
- Reuqests v0.6.0 Captain Hook! 2016-03-19
- Reuqests v0.7.0 awesome gevent 2016-03-22
- Reuqests v0.8.0 2016-03-??
還有老外分享的一個PPT,手把手教你如何阅读源码,也是拿Requests作为参考例子 https://www.slideshare.net/onceuponatimeforever/lets-read-code ,没有梯子的在这里下载 https://pan.baidu.com/s/1i5ggKjr
下面是Kenneth Reitz大神自己推薦的源碼閱讀清單,來源:Reading Great Code
- Howdoi Howdoi is a code search tool, written in Python
- Flask Flask is a microframework for Python based on Werkzeug and Jinja2. It’s intended for getting started very quickly and was developed with best intentions in mind.
- Diamond Diamond is a python daemon that collects metrics and publishes them to Graphite or other backends. It is capable of collecting cpu, memory, network, i/o, load and disk metrics. Additionally, it features an API for implementing custom collectors for gathering metrics from almost any source.
- Werkzeug Werkzeug started as simple collection of various utilities for WSGI applications and has become one of the most advanced WSGI utility modules. It includes a powerful debugger, full-featured request and response objects, HTTP utilities to handle entity tags, cache control headers, HTTP dates, cookie handling, file uploads, a powerful URL routing system and a bunch of community-contributed addon modules.
- Requests Requests is an Apache2 Licensed HTTP library, written in Python, for human beings.
- Tablib Tablib is a format-agnostic tabular dataset library, written in Python.
董伟明
推荐阅读我的专栏文章:教你阅读Python开源项目代码 - Python之美 - 知乎专栏。 我摘录一部分:
我个人的喜好
和工作中看别人代码差不多,基本每个人、每个项目、每个团队都有自己写代码的风格,比如变量命名风格、某些语言特性使用方式、代码规范要求、目录风格等,其实开源项目的作者也是一样。看代码,如看人(团队)。 首先介绍下我的喜好(排名分先后):
1. kennethreitz。requests和python-guide作者。他还有一个非常励志的故事,有兴趣的可以看 谁说程序员不是潜力股?
2. mitsuhiko。flask、Jinja2、werkzeug和flask-sqlalchemy作者。
3. sigmavirus24。flake8、pycodestyle(原pep8)、requests、urllib3等项目的主要贡献者和维护者。
4. ask。Celery及相关依赖的作者。
5. ajdavis。mongo-python-driver(pymongo)、tornado等项目的主要贡献者。
6. bitprophet。fabric、paramiko(Python的ssh库)作者。
前2个是公认的Python领域代码写的最好的、最有创意的工程师。
初学者推荐阅读项目
初学者可以先阅读一些代码量比较少的,最好是单文件的项目:
1. GitHub - kennethreitz/pip-pop: Tools for managing requirements files.
2. GitHub - kennethreitz/envoy: Python Subprocesses for Humans™.
3. GitHub - kennethreitz/records: SQL for Humans™
4. GitHub - mitsuhiko/pluginbase: A simple but flexible plugin system for Python.
5. GitHub - mitsuhiko/pipsi: pip script installer
6. GitHub - mitsuhiko/unp: Unpacks things.
7. GitHub - chrisallenlane/cheat
8. GitHub - jek/blinker: A fast Python in-process signal/event dispatching system.
9. GitHub - mitsuhiko/platter: A useful helper for wheel deployments.
看代码主要是了解别人写代码的方式,语法实践这些内容。看完之后,你可以针对这些项目能解决的问题自己写个项目,写完之后和上述项目去对比一下,看看哪些方面做的不好。
进阶阅读项目
进阶的时候就要阅读一些相对复杂的项目,它们能帮助你提升Python编程技巧:
1. faif/python-patterns。使用Python实现一些设计模式的例子。
2. pallets/werkzeug。flask的WSGI工具集。其中包含了实现非常好的LocalProxy、cached_property、import_string、find_modules、TypeConversionDict等。
3. bottlepy/bottle。阅读一个Web框架对Web开发就会有更深刻的理解,flask太大,bottle就4k多行,当然如果你有毅力和兴趣直接看flask是最好了的。
4. msiemens/tinydb。了解用Python实现数据库。
5. coleifer/peewee。了解ORM的实现。
6. pallets/click。click已经内置于在flask 0.11里,提供命令行功能,值得阅读。
7. mitsuhiko/flask-sqlalchemy。了解一个flask插件是怎么实现的。
除此之外Web开发者可以阅读一些相关的项目:
1. runscope/httpbin。使用flask,网站是httpbin(1): HTTP Client Testing Service。
2. jahaja/psdash。使用flask和psutils的获取Linux系统信息的面板应用。
3. pallets/flask-website。 flask官方网站应用。
4. pypa/warehouse。如果你使用pyramid,这个新版的PYPI网站,可以帮助你理解很多。
当然,2个学习flask重要的资源必须爆一爆:
1. GitHub - realpython/discover-flask: Full Stack Web Development with Flask。
2. 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 的练手项目有哪些值得推荐? - 小小搬运工的回答。
欢迎关注本人的微信公众号获取更多Python相关的内容(也可以直接搜索「Python之美」):
http://weixin.qq.com/r/D0zH35LE_s_Frda89xkd (二维码自动识别)