GitHub 上有什么值得学习,简单的,易读的 Python 项目?

本人是大二的学生,平时无聊用Python给Mac写了一个小的天气预报的项目, 发到了github上了,github.com/jamesxu182/M 。 非常好奇大型软件是怎么开发的,复杂的UI是如何设计的。 敢问大神github上有哪些简单的,适合我这个水平的Python项目。
关注者
6114
被浏览
232375

24 个回答

推荐阅读我的专栏文章 教你阅读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.

10. GitHub - kennethreitz/tablib: Python Module for Tabular Datasets in XLS, CSV, JSON, YAML, &c.

看代码主要是了解别人写代码的方式,语法实践这些内容。看完之后,你可以针对这些项目能解决的问题自己写个项目,写完之后和上述项目去对比一下,看看哪些方面做的不好。

进阶阅读项目

进阶的时候就要阅读一些相对复杂的项目,它们能帮助你提升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之美」):

weixin.qq.com/r/D0zH35L (二维码自动识别)

不要脸推荐自己 +1

--------------------------------

我 Python 也用了挺久了……但是都是些小脚本,放到 Github 上的也就三四个……

满足答主「值得学习」这个目标的我感觉只有这个勉强达标:

GitHub - 7sDream/zhihu-oauth: 尝试解析出知乎官方未开放的 OAuth2 接口,并提供优雅的使用方式,作为 zhihu-py3 项目的替代者,目前还在实验阶段

因为这个库是我写的比较认真的一个项目,注释,文档和代码都比较完善。

这是个和网络,OAuth,知乎,JSON,ORM有关的一个项目。比较多的用到了装饰器呀,importlib 呀之类的一些稍微超过入门级的东西,结构设计也比较合理,算是值得已经入门的同学一看吧,当然 Python 精通者会觉得很平常的,我现在也觉得除了写的比较规范之外并没有什么太大亮点。

附上一张某位同学看完代码之后非常过誉的评价:


虽然我还没工作过,不知道啥叫「工业级别的水准」,但是这应该是在夸我没错吧 OvO

--------------------------------

然后还有一些其他的:
GitHub - 7sDream/kd100: I'm a small script that help you get express package information use http://kuaidi100.com api.

这个东西是个查快递的……

想学学 Python 自带的 urllib 的网络请求和 argparse 的应该可以简单看看。还有如何把自己的代码打包成一个直接能用的 CLI。



我也不知道为什么要写个这个,明明现在网站上都可以直接看的好么……

--------------------------------

GitHub - 7sDream/zhihu-py3: Zhihu UNOFFICIAL API library in python3, with help of bs4, lxml, requests and html2text.

上面这个虽然是我 Gtihub 上 Star 最多的一个 Lib,但是比较不值得看。

除非你想学习以下内容:
  • requests session cookies 的例子
  • BeautifulSoup4 的例子
  • 如何用 Class 把凌乱的数据组织起来
  • 如何尽量减少不必要的网络请求
我已经想把这个项目列为我的黑历史了,因为是大一大二刚学 Python 的时候乱写的。虽然功能比较多,代码量也挺大,但根本没有什么代码之美,Python 之禅(其实还是有一点的,比如 Client 以及 Activity 类,但是杂乱占比比较多),什么 DRY 原则也被我践踏到不知道哪里去了 =,=

要不是还有些人在用,我已经想删 repo 了……真的,我算是体会到了什么叫做自己都不愿再看自己写的代码……(但我还在非常缓慢的保持着它更新 =,=

--------------------------------

GitHub - 7sDream/pyqart: QArt Python Implementation.

这个倒是可以看……可是不容易看懂。建议只看 qr 部分,这是一个没有任何依赖的纯 Python 写的二维码编码器。

连 PIL 都不是必须依赖,因为可以直接输出到终端而不是图片:

I\'m a QrCode in version 6, 90 deg rotation, ec level 3 (二维码自动识别)


知乎愚蠢的二维码自动识别又把我的截图给识别没了,放链接好了rikka-10066868.image.myqcloud.com

当然如果想输出图片的话 PIL(pillow)这个依赖还是要的。

如果真的想自己动手写一个的话,建议和二维码的 IOS 标准一起看:swisseduc.ch/informatik

如果能看完,并且想看 art 部分,需要跟着论文一起看:research.swtch.com/qart

--------------------------------

GitHub - 7sDream/qqqfome: Thank-you-follow-me Ha Ha Ha!

一个给知乎里的新关注者自动发私信的项目,效果是大概这样:谢谢你关注我呀!!! - 科学の禁书目录 - 知乎专栏

但是我已经关了它好久了,也就部署过一下下时间,不知道还有用没有。

里面有个 unix double fork 把自己变成 daemon 的方法值得看看。

可能还有一些 sqlite 和 logging 模块的用法吧,当个例子也可以。

我计划着用 oauth 替代 py3 把它重写, 然后 build 成一个 docker image 方便以后使用~

不过应该不是近期的计划。

--------------------------------

GitHub - 7sDream/0v0.link-blog: Blog, powered by django, sqlite, apache.

啊,我的博客:7sDream Blog

用的 Django …… 然而至今没写完……所以博客里也只有一个关于我……

作为一个不喜欢写博客的,基本不懂前端的人,完全没用动力把它写完……心塞中

不过如果你对 Django 感兴趣,也许也能当个例子什么的。

--------------------------------

没了,这会真没了……还有一些一次性或者没什么大用处的东西我都没放 Github……

--------------------------------

最近跑去学 Golang 去了……Python 好久没写了……怀念ing

另外,大家说的没错,requests 真的很值得一读:GitHub - kennethreitz/requests: Python HTTP Requests for Humans™