# Python 学习资源

Python 从入门到进阶的学习资源。

```{note}
这些资源依照你的喜好选择学习即可。
```

## 初学者

[Python 教程](http://docs.python.org/tutorial/index.html)
:   Python 官方教程。它涵盖了所有的基础，并提供了 Python 语言和标准库的浏览。推荐给需要快速开始的人。

[Real Python](https://realpython.com/)
:   由各种专业的 Python 开发团队创建的免费且深入的 Python 教程库。包括从头开始学习 Python 的所有内容，从 Python 最基础的知识，到 Web 开发和 Web 爬取，再到数据可视化等等。

[Online Python Tutor](http://pythontutor.com/)
:   在视觉上向您一步步展示程序是如何运行的。Python Tutor 帮助人们克服 学习编程的基本障碍，让您明白程序源码中的每一行的执行会有怎样的结果。

[Invent Your Own Computer Games with Python](http://inventwithpython.com/)
:   面向没有任何编程经验的新手书籍。每个章节都有一个小游戏的源码，这些程序例子说明了 编程概念，让读者了解到程序是什么样的。

[Hacking Secret Ciphers with Python](http://inventwithpython.com/hacking/)
:   此书向完全的新手讲解了 Python 编程和基本的密码学知识。所有章节提供了多种加密源码，也提供了破解程序。

[Crash into Python](https://stephensugden.com/crash_into_python/)
:   这个指南也叫 Python for Programmers with 3 Hours ，它给有其他语言开发经验的开发人员提供一个关于 Python 的快速教程。

[Think Python: How to Think Like a Computer Scientist](http://greenteapress.com/thinkpython/html/index.html)
:   通过使用 Python 语言来介绍计算机科学中的基本概念。重点是创建一本有大量练习的书，尽量减少专业术语，并在每一章中都有一节专门讨论调试的主题”。

    在探索 Python 语言的各种功能时，作者将各种设计模式和最佳实践编织在一起。

    此书中还包括一些案例研究，将书中的主题应用到实际例子中，供读者对主题进行更深入的讨论。案例研究包括 GUI 和 Markov 分析的任务。

[Code the blocks](https://codetheblocks.com/tutorials/introduction)
:   为初学者提供免费的交互式 Python 教程。它将 Python 编程与 3D 环境相结合，您可以在其中 “放置方块” 并构建结构。本教程将教您如何使用 Python 创建逐渐精细的 3D 结构，从而使得学习 Python 的过程变得有趣和吸引人。

## 中级

[Python Tricks: The Book](https://realpython.com/products/python-tricks-book/)
:   通过简单的示例发现 Python 的最佳实践，并开始编写更美观的且 Pythonic 的代码。

    您将通过实际示例和清晰的叙述掌握 Python 的中级和高级功能。

[Effective Python](https://effectivepython.com/)
:   此书包含 59 种具体方法来改进编写 Pythonic 代码。在这 227 页中，这是一个关于程序员需要做的一些最常见的程序以成为高效的中级 Python 程序员的非常简要的概述。

## 高级

[Pro Python](https://www.apress.com/gp/book/9781430227571)
:   面向从中级到高级，想明白 Python 是如何以及为何这样工作，如何将代码水平提高一级的 Python 程序员。

[Expert Python Programming](https://www.packtpub.com/product/expert-python-programming-third-edition/9781789808896)
:   讲解编写 Python 的最佳实践，并专注更高级的人员。

    它以诸如装饰器（伴随缓存、代理、上下文管理器、案例研究）、方法解析顺序、使用 super()、元编程和一般 {pep}`8` 上的最好实践开始。

    它有一个详细的、多章的关于编写的案例研究，发行了一个包并最终成为一个应用，包含使用 zc.buildout 的一个章节。后面的章节详细讲述了最佳实践，比如编写文档、测试驱动开发、版本控制、优化和分析。

## 工程师和科学家

[A Primer on Scientific Programming with Python](http://www.rafekettler.com/magicmethods.html)
:   由 Hans Petter Langtangen 编写，主要涵盖了 Python 在科学领域的使用。在这本书中，例子是从数学和自然科学中选出的。

[Numerical Methods in Engineering with Python](https://www.cambridge.org/us/academic/subjects/engineering/engineering-mathematics-and-programming/numerical-methods-engineering-python-2nd-edition)
:   由 Jaan Kiusalaas 编写，其重点是数值方法以及如何用 Python 来实现。

## 各种各样的话题

[Problem Solving with Algorithms and Data Structures](http://www.interactivepython.org/courselib/static/pythonds/index.html)
:   涵盖了一系列数据结构和算法。所有概念都用 Python 代码说明，提供了可在浏览器中直接运行的交互式样例。

[Programming Collective Intelligence](http://shop.oreilly.com/product/9780596529321.do)
:   介绍了大量基础的机器学习和数据挖掘方法。其展示在数学上并不是很正式，而是更侧重于解释潜在的直觉，以及展示如何使用 Python 来实现算法。

[Transforming Code into Beautiful, Idiomatic Python](https://www.youtube.com/watch?v=OSGv2VnC0go)
:   由 Raymond Hettinger 制作的视频。通过它可以学习到更好地使用 Python 的最佳特性，通过一系列的代码转换来改进现有代码：”当您看见这个，就那样去做”。

[Fullstack Python](https://www.fullstackpython.com/)
:   为使用 Python 进行 Web 开发提供了完整的自顶向下的资源。

    范围涵盖从设置 Web 服务器到设计前端、选择数据库、优化/缩放等。

    顾名思义，它涵盖了从头开始构建和运行完整的 Web 应用程序所需的所有内容。

[PythonistaCafe](https://www.pythonistacafe.com/)
:   一个邀请式的在线社区，里面的 Python 和软件开发爱好者互帮互助、彼此成长。可以把它看做是 Pythonista 共同进行改进的俱乐部。在这里，每天都会讨论广泛的编程问题、职业建议，同时也会涉及其他主题。

## 参考

[Python in a Nutshell](http://shop.oreilly.com/product/9780596001889.do)
:   由 Alex Martelli 编写，涵盖了 Python 跨平台的多数用法，从它的语法到内建库，再到比如说编写 C 扩展的高级主题。

[The Python Language Reference](http://docs.python.org/reference/index.html)
:   Python 的参考手册，它涵盖了这门语言的语法和核心语义。

[Python Essential Reference](http://www.dabeaz.com/per.html)
:   由 David Beazley 撰写，是 Python 的最终参考指南。它简明扼要地解释了标准库的核心语言和最重要的部分。 它涵盖了 Python 3 和 2.6 版本。

[Python Pocket Reference](http://www.dabeaz.com/per.html)
:   由 Mark Lutz 编写，是一个了解核心语言的易于使用的参考，介绍了常用的模块和工具集。它涵盖了 Python 3 和 Python 2。

[Python Cookbook](http://shop.oreilly.com/product/0636920027072.do)
:   由 David Beazley 和 Brian K. Jones 编写，打包了许多具有实践意义的“食谱”。这本书涵盖了核心 Python 语言，也涵盖了诸多不同应用的常见任务。

[Writing Idiomatic Python](https://www.amazon.com/Writing-Idiomatic-Python-Jeff-Knupp-ebook/dp/B00B5VXMRG/)
:   由 Jeff Knupp 编写，包含了最常见和最重要的 Python 习语，其形式尽可能地有辨识度和易于理解。每个习语都是编写一些常用代码片段的推荐方式，其后会解释为什么这个习语是重要的。每个习语均有两个代码样例：”有害的” 方式和 “理想的” 方式。
