我了解 Python 基础知识,下一步做什么?
下一步学什么是一个经常被问到的问题。在 /r/learnpython 上搜索what next
“下一步学什么”会得到太多结果。以下是一些关于这个话题的问答和文章:
练习和项目
我对这个问题也没有简单的答案。如果你对编程基础和 Python 语法感到满意,那么练习是检验你知识水平的好方法。你学习 Python 时使用的资源通常会包含一些练习,所以这些练习是理想的首选。我还建议使用以下资源来提升你的技能。如果你遇到困难,可以重读与这些主题相关的材料,在线搜索,寻求帮助等等——简而言之,努力去解决它。跳过一些棘手的问题(如果有时间的话,以后再回来看),但你应该能够解决大多数初学者的问题。记录笔记也会有所帮助,尤其是针对常见的错误。
- Exercism、Practicepython、Edabit — 这些都适合初学者,并且有难度级别标记
- Codewars、Adventofcode、Projecteuler — 更具挑战性
- Checkio、Codingame、Codecombat——基于游戏的挑战
- /r/dailyprogrammer — 目前不活跃,但过去有很多挑战和讨论
熟悉了基础知识和语法后,下一步就是开始做项目。我使用了一个只有 10 行的程序来解决一个常见问题——向未对齐的文件body { text-align: justify }
中添加epub
内容。我之前并不知道这行代码会有帮助,所以我在网上搜索了一个解决方案,然后自动完成了解压epub
、添加行以及再次打包的过程。这可能需要你查阅文档并浏览一些 StackOverflow 问答。一旦你编写了这个解决方案并定期使用它,你可能会遇到一些特殊情况和需要添加的功能。我认为这是学习和理解编程的好方法。
调试
了解如何调试程序至关重要,理想情况下应该从一开始就教授,而不是在书的末尾单独开一章。Think Python就是这类资源的绝佳范例。
像Pythontutor这样的网站允许你以可视化的方式调试程序——你可以一步一步地执行程序并查看变量的当前值。Pycharm和Thonny等 IDE 通常也提供类似的功能。这些可视化功能实际上使用了pdb 模块。另请参阅使用 pdb 进行 Python 调试。
调试通常令人沮丧。休息一下会有所帮助(有时我在梦里就能发现问题)。尝试尽可能精简代码,以便只留下重现问题所需的最少代码。与朋友/同事/无生命物体等讨论问题也会有所帮助——这被称为“橡皮鸭调试”。我经常在 Stackoverflow/Reddit 等论坛上构思问题时发现问题,因为写下问题是另一种让思路清晰的方法,而不是仅仅在脑海中留下一个模糊的想法。以下是一些关于这个具有挑战性的话题的文章:
这是来自一系列有趣的错误故事的一个有趣的片段(经过修改以保持其简短) 。
每当首席执行官走进房间时,jpeg 解析器就会卡住,因为他总是穿着一件带有方形图案的衬衫,这会触发一些特殊的对比度和块边界算法。
另请参阅荒谬的软件错误故事精选列表。
测试
编程过程中的另一个关键环节是了解如何编写测试。在大型项目中,通常会有独立的工程师(数量往往比代码开发人员多得多)来测试代码。即使在这种情况下,自己编写一些健全的测试用例也能帮助你更快地开发,确保更改不会破坏基本功能。
目前,测试方法尚无统一的共识。有单元测试、集成测试、测试驱动开发等等。通常,这些方法会结合使用。如今,机器学习也被用于缩短测试时间,例如,请参阅“使用机器学习更高效地测试 Firefox” 。
当我开始一个项目时,我通常会尝试逐步编写程序。假设我需要遍历目录中的文件。我会确保这部分功能正常运行(通常使用print
语句),然后添加另一个功能——比如读取文件并进行测试等等。这减轻了在最后一次性测试大型程序的负担。并且,根据程序的性质,我会在最后添加一些健全性测试。例如,对于我的command_help项目,我将一些包含不同选项和参数的程序测试运行复制粘贴到一个单独的文件中,并编写了一个程序,以便在源代码修改时以编程方式执行这些测试。
对于一些比较复杂的项目,你通常会需要一些框架,比如内置模块unittest
或第三方模块pytest
。这里有一些学习资源。
- 使用 Python 进行测试入门
- calmcode: pytest
- obeythetestinggoat — 使用 Python、Selenium、Django、JavaScript 和 pals 进行 Web 的 TDD
- Python 中的现代测试驱动开发— TDD 指南,具有真实世界的应用示例
中级 Python 资源
- 官方 Python 文档——Python 文档是信息的宝库
- Calmcode — 关于测试、代码风格、args kwargs、数据科学等的视频
- 实用 Python 编程— 涵盖 Python 编程的基础方面,重点是脚本编写、数据操作和程序组织
- 中级 Python — 涵盖调试、生成器、装饰器、虚拟环境、集合、理解、类等
- 高效 Python — 深入了解 Python 式的程序编写方式
- 流畅的 Python — 带您了解 Python 的核心语言功能和库,并向您展示如何使您的代码更短、更快、更易读
- 严肃的 Python — 部署、可扩展性、测试等等
- Python Pro 实践— 学习设计专业级、干净、易于维护的大规模软件,包括软件开发最佳实践的示例
- Python编程——基于领域的主题,如机器学习、游戏开发、数据分析、Web 开发等
- Youtube:Corey Schafer — 为初学者到高级用户提供各种主题
算法和设计模式
- 使用算法和数据结构解决问题
- GitHub:很棒的算法
- GitHub:设计模式和惯用法的集合
- Python 设计模式灵感来自《设计模式:可复用面向对象软件的元素》(也称为《四人帮》一书)
便捷的备忘单
- Python 速成课程备忘单
- 全面的 Python 速查表
- 科学 Python 速查表
- 初学者常见错误——使用 pdf 链接
更多 Python 资源
受这篇文章的启发,我创建了一个Python 学习资源库,它按类别(初级、中级、高级、Web/ML/数据科学等领域)分类,并包含一个方便的搜索功能。
希望这些资源能帮助你迈出关键的下一步,继续你的 Python 之旅。祝你学习愉快 :)
文章来源:https://dev.to/learnbyexample/i-know-python-basics-what-next-49n1