Web 开发
提到 Python 的 Web 框架,第一反应就是老三样,Django,Flask 和 Tornado。如果按流行度来排名的话,应该也是这个顺序。
在 2016 年,发布了一款 Web 框架,叫 Sanic,表现还不错,应该算是后起之秀。
Django
Python 中最流行的 Web 框架,功能非常全面,像安全认证,URL Routing,模板引擎,ORM,甚至 Admin 管理后台,全部包括。
Flask
也是非常流行的一个 Web 框架,它的特定是轻便,灵活,可定制性强。
用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时,实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。
Bottle
一个简单高效的遵循 WSGI 的微型 Web 框架。说微型,是因为它只有一个文件,除 Python 标准库外,它不依赖于任何第三方模块。
这个框架使用的比较少,不过源码也很少,如果想读源码的话,从它入手倒是一个不错的选择
Tornado
Tornado 是一个基于 Python 的 Web 服务框架和异步网络库,通过利用非阻塞网络 I/O, 可以承载成千上万的活动连接。在需要长连接的场景下使用,效果会更好。
Sanic
2016 年 5 月发布的第一个版本,整体表现还是不错的,使用的人也越来越多。
Sanic 是 Python3.7+ Web 服务器和 Web 框架,旨在提高性能。它允许使用 Python3.5 中添加的 async/await
语法,可以使代码有效的避免阻塞从而达到提升响应速度的目的。
开源项目
阅读开源项目对提高编程水平是很有帮助的,下面推荐的开源项目有的是我读过的,有的是正准备读的。
说实话,有的时候看到好的开源项目会非常自卑,为什么人家就能写出那么优雅的代码,而自己写的是如此垃圾。可能这就是程序员成长的必经之路吧。
alive-progress
一个用 Python 实现的非常炫酷的进度条项目。
python-patterns
使用 Python 实现一些设计模式的例子。
学语言的同时可以学习一些设计模式,在开发过程中使用恰当的设计模式,可以使自己的代码更加优雅。
peewee
Peewee 是一个小型的 ORM 项目,整体规模不大,更容易学习。
如果想看 Django 源码,不妨从 Peewee 入手。
flask-sqlalchemy
Flask-SQLAlchemy 是一 个Flask 扩展,简化了在 Flask 程序中使用 SQLAlchemy 的操作。
awesome-django-cn
又看到 awesome 了,这个项目收集了大量 Django 相关的优秀应用、项目等资源,方便 Django 用户参考查阅。
500lines
这真的是一本神书,在网上也有很多人推荐。它包含了十几个不同章节,比如 ci,crawler,ocr 等,每个章节都由该领域大牛完成。
它的厉害之处就在于每个章节都试图用 500 行,甚至更少的代码去实现相应功能。如果仔细研究各个章节的代码,一定会对 Python 有更深刻的理解。
requests
Kenneth Reitz 大神的成名之作,如果想读 Python 源码的话,那一定要看,感受一下什么是真正的 Pythonic 代码。
在这里再推荐一份 Requests 源码阅读清单,可以作为参考。
awesome-python
跟大家分享一个小技巧,看到项目名中带有 awesome,那说明这个项目一定不简单。
awesome-python 是 vinta 发起维护的 Python 资源列表,内容包括:Web 框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。
看过这个项目,那一定会感叹,知识太多了,根本学不完。
实用工具
Python Tutor
网站地址:www.pythontutor.com/
Python Tutor 是由 Philip Guo 开发的一个免费教育工具,可帮助学生攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。
通过这个工具,可以直接在 Web 浏览器中编写 Python 代码,并逐步可视化地运行程序。
如果你不知道代码在内存中是如何运行的,不妨把它拷贝到 Tutor 里可视化执行一遍,加深理解。
在这篇文章 一个关于 += 的谜题 中有过这个工具的使用。
IPython
网站地址:ipython.org/
IPython 是一个 for Humans 的 Python 交互式 shell,用了它之后你就不想再用自带的 Python shell 了。
IPython 支持变量自动补全,自动缩进,内置了许多实用功能和函数,同时它也是科学计算和交互可视化的最佳平台。
online-python
这个没什么可说的,在线编辑和运行代码。
技术社区和博客
学习编程并不是一蹴而就,而是需要长期的坚持和训练。整理这份学习路线,是希望和大家共同进步。不管是编程新手,还是需要进阶的有一定经验的程序员,我相信都可以从中有所收获。
文中涉及到的资源和思维导图源文件都在 GitHub 开源了,大家可以自取。