附录 C 寻求帮助

    附录 C 寻求帮助 - 图1
    每个人在学习编程时都会遇到困难,因此作为程序员,需要学习的最重要的技能之一就是如何高效地摆脱困境。本附录简要地介绍几种帮助你摆脱编程困境的方法。

    C.1 第一步

    陷入困境后,首先需要判断形势。向他人寻求帮助之前,请回答如下三个问题。

    • 你想要做什么?
    • 你已尝试了哪些方式?
    • 结果如何?

    答案应尽可能具体。对于第一个问题,像“我要在新购买的 Windows 笔记本上安装最新版 Python”这样明确的陈述就足够详细了,让 Python 社区的其他成员能够施以援手,而像“我要安装 Python”这样的陈述则没有提供足够的信息,别人无法提供太多的帮助。

    对于第二个问题,答案应提供足够多的细节,以免别人建议你尝试重复的方式:相比于“我访问 Python 网站并下载了一些东西”,“我访问 Python 网站的下载页面,单击针对我使用的系统的 Download 按钮,然后运行了安装程序”提供的信息更详细。

    对于第三个问题,知道准确的错误消息很有用,因为这样便于在线搜索以寻找解决方案,也可在向他人寻求帮助时提供。

    有时候,只需要回答这三个问题,就能发现遗漏了什么,无须求助就能摆脱困境。程序员甚至给这种情形取了一个名字:小黄鸭调试法。如果向一只橡皮小黄鸭(或其他任何无生命的东西)清楚地阐述自己的处境,并提出具体的问题,常常能够回答这个问题。有些编程团队甚至会在办公室里放置一只小黄鸭,旨在鼓励程序员“与小黄鸭交流”。

    C.1.1 再试试

    只需回头重来一次,就足以解决很多问题。假设你在模仿本书的一个示例编写 for 循环时遗漏了某个简单的东西(如 for 语句末尾的冒号),再试一次就可能帮你避免犯重复同样的错误。

    C.1.2 歇一会儿

    如果你在很长时间里一直试图解决同一个问题,那么休息一会儿实际上是你可采取的最佳战术。长时间从事一项工作可能会让你变得“一根筋”:脑子里想的都是同一个解决方案,对已经做的假设视而不见。休息一会儿有助于从不同的角度看问题。不用休息很长时间,只需让你摆脱当前的思维方式就行。如果你坐了很长时间,就起来做做运动:散散步或去室外待一会儿,喝杯水或吃点健康的零食。

    如果你感到心情沮丧,也许应该休息一整天。晚上睡个好觉后,你常常会发现问题并不是那么难以解决。

    C.1.3 参考本书的在线资源

    本书提供了配套的在线资源,网址为 https://www.ituring.com.cn/book/3038,其中包含大量有用的信息,比如如何设置系统以及如何解决每章可能遇到的难题。如果你还没有查看这些资源,现在就去吧,看看它们能否提供帮助。

    C.2 在线搜索

    很可能有人遇到过你面临的问题,并在网上发表了相关的文章。高超的搜索技能和具体的关键字有助于找到现有的资源,帮助解决你面临的问题。如果无法在新的 Windows 系统中安装最新版 Python,搜索“安装 Python Windows”并将结果限定为一年内,可能会让你找到清晰的解决方案。

    使用计算机显示的错误消息进行搜索也很有帮助。假设你试图在新的 Windows 系统中从终端运行 Python 程序,却出现了如下错误消息:

    > python hello_world.py
    Python was not found; run without arguments to install from the Microsoft
    Store…

    搜索完整的错误消息“Python was not found; run without arguments to install from the Microsoft Store”,也许能得到不错的建议。

    在搜索与编程相关的主题时,有几个网站会反复出现。下面简要介绍这些网站可以为你提供什么样的帮助。

    C.2.1 Stack Overflow

    Stack Overflow 是最受程序员欢迎的问答网站之一,当你进行与 Python 相关的搜索时,它常常出现在第一个结果页中。Stack Overflow 的成员可在陷入困境时提出问题,而其他成员会努力提供有帮助的答案。因为用户可以推荐自己认为最有帮助的答案,所以前几个答案通常就是最佳答案。

    很多基本的 Python 问题在 Stack Overflow 上有非常明确的答案,因为这个社区在对其进行不断的改进。它鼓励用户发布更新的帖子,因此这里的答案通常与时俱进。在本书编写期间,Stack Overflow 上与 Python 相关且得到回答的问题接近 200 万个。

    在 Stack Overflow 上发帖时需要牢记:要通过尽可能简短的示例说明你面临的问题。如果你贴出引发错误的 5~20 行代码,并回答了 C.1 节列出的问题,很可能有人愿意施以援手。相反,如果你只分享一个链接,指向一个包含多个大型文件的项目,就可能没人愿意提供帮助。在如何提问方面, Stack Overflow 帮助中心里的文章 How do I Ask a Good Question? 给出了出色的指南。无论在哪个程序员社区寻求帮助,这些建议都适用。

    C.2.2 Python 官方文档

    对初学者来说,Python 官方文档显得有点“随意”,因为其主要目的是阐述这门语言,而不是进行解释。官方文档中的示例应该很有用,但你也许不能完全理解。尽管如此,它还是一个不错的资源。如果它出现在搜索结果中,就值得你参考。另外,随着你对 Python 的认识越来越深入,这个资源的用处将越来越大。

    C.2.3 库官方文档

    如果你使用了库,如 Pygame、Matplotlib、Django 等,搜索结果中通常会包含官方文档的链接。例如,在你使用 Django 时,Django 官方文档就很有用。如果你要使用这些库,最好熟悉其官方文档。

    C.2.4 r/learnpython

    Reddit 包含很多子论坛,称为 subreddit,其中的 r/learnpython 非常活跃,提供的信息也很有帮助。你既可以在这里阅读其他人提出的问题,也可以提出自己的问题。对于你提出的问题,常常有人从不同的角度进行解读,这对你更深入地理解相关主题大有帮助。

    C.2.5 博客

    很多程序员有博客,在上面发表关于自己使用的语言的帖子。对于搜索到的博文,务必看看发表日期,确定它是否适用于你使用的 Python 版本。

    C.3 Discord

    Discord 是一个在线聊天环境。它包含一个 Python 社区,你不仅可以在其中寻求帮助,还可以参加与 Python 相关的讨论。

    要进入该社区,可访问 Python Discord 网站,再单击右上角的链接 Discord。如果有 Discord 账户,可使用它登录;如果没有,请输入用户名并按提示完成 Discord 注册过程。

    首次访问 Python Discord 时,需要接受社区行为准则。完成注册并登录后,就能加入你感兴趣的任何频道了。在寻求帮助时,务必在 Python Help 频道发帖。

    C.4 Slack

    Slack 也是一个在线聊天环境,通常用于公司内部交流,但也有很多面向公众的讨论组。要加入 Slack Python 讨论组,可访问 PySlackers 网站,单击页面顶部的链接 Slack,再输入电子邮箱地址以获取邀请函。

    进入 Python Developers 工作区后,将出现一个频道列表,你可单击 Channels 并选择感兴趣的主题。你想首先加入的可能是频道 #help 和 #django。