大家好,在之前我们已经详细讲过了在刚开始学习Python面对众多IDE该如何选择,今天我们接着聊聊在新手期最头疼的问题,遇到代码报错该如何解决,希望能帮到正在学习Python的你。
正确认识报错
首先你要明白,在新手期不论你是配置环境还是调试代码出现的错误,不论你是直接复制粘贴执行别人代码报错还是按照别人的教程一步一步操作突然报错,都是很常见的情况,而这些问题:
- 一定有很多人碰到过
- 一定有很多人在网络上提问
- 一定有人分享解决方案
所以在遇到错误时不要不知所措,不要立刻打开聊天框咨询别人,而是需要冷静下来相信你的问题一定能通过简单的搜索找到答案,接下来我们就聊聊如何搜索。
正确识别并搜索你的问题
现在,我们尝试使用搜索引擎来搜索自己的报错,其实这并不简单。我们需要从一堆报错提示中找到关键的部分去搜索,我们既需要自己搜索的代码段不长,但是又要保留关键的报错提示。
所以第一步就需要正确识别你的问题,在一般情况下在报错的最后一段都会给出具体的提示,我们只需要直接百度这一行即可,对于新手来说大多数是SyntaxError、KeyError、AttributeError、ModuleNotFound
等常见错误,而这些搜索得到的前三个结果基本就能搞定!
但是有时复制这行提示直接搜索并找不到有效的方案,这大概率是由于对应代码中包含了一些你特有的信息,所以这就需要你从一堆提示中识别这大概是什么类型的错,有哪些单词是你所特有的需要排除之后重新检索,而这其实是一项很重要的技能,只有在不断的搜索中才能磨练出来。
也有时你怎么搜索都找不到有效的解决办法,可能就需要将你的具体问题/报错抽象出来,搜索你想实现的功能或者与这段报错类似的提示,学会从差不多的问题中找到自己解决问题办法也是一门技能。
最后要说的是除了搜索引擎搜索,我们还需要学会阅读官方文档,很多问题你可以从开发者编写的文档找到解决方案,而这些就需要你学会使用GitHub,并且一些疑难杂症也可以在issue中参考,其实通常情况在issue中提问得到的回复还是比较快,并且可以直接与开发者交流。
所以小白们在独立解决问题时可以这么做
- 相信自己的问题一定能在网上找到答案
- 从一堆报错中找到恰当的检索关键词
- 百度/CSDN/知乎/博客园等网站搜索
- Google/Stack Overflow等网站搜索
- 优化/调整关键词寻找类似问题
- GitHub/开发者社区尝试寻找答案
插一句,其实独立解决报错是一项非常重要的技能,并且在自己独立尝试解决的过程中会学到很多远超问题本身的知识,这会让你的编程能力飞速提升!你的每一次搜索都能让下一次程序出现问题时更快的找到答案!
勇于尝试
在我收到的很多问题中,有很大一部分问题是类似于:
- 这个变量是什么意思
- 这个函数有什么作用
- 这个框框能不能选中
- 我这样做行不行
- ······
这样的问题会让人很无语,变量什么意思函数什么作用你执行一遍就能看明白,如果看不明白就再执行一遍检查结果观察变化。这个框框要不要选中,你就选中点确定看看会发生什么,如果不是你想要的结果就回去反选,如果操作不可逆的话就备份一下再尝试,如果只能尝试一次大不了就是重新安装。
对于我这样做行不行的问题,一般我都会建议你试一下,不要问别人行不行,行不行copy一份数据你试一试就知道行不行。如果是配置环境你就按照你的思路或者网上找到的答案去试一下,最坏的结果就是把环境搞崩了,大不了重头来一遍,而这之前的操作你已经轻车熟路了。
你不可能遇到问题永远都会有人迅速给你抛出一个正确答案,所以我十分鼓励在遇到问题时有自己的想法并且大胆的按照自己的想法去尝试,在尝试的过程中很大概率会接着碰到问题,你会接着解决,编程能力就是在不断的自我尝试中,不断的折腾中慢慢提升,错误的方法试多了之后,再次遇到同类型的错误你就能迅速找到一条相对正确的道路。
如何提问
好了,我们终于来到这里,在你遇到一些问题自己尝试去解决了很久都没有搞定之后,肯定要拿着问题/错误代码去咨询别人。但是提问也不是随便发个错误代码就OK,一定要让你的提问非常有效率,所以在提问时一定要注意避免:
- 不搜索/不尝试解决就提问
- 不提供完整的报错代码
- 不提供与报错代码有关的代码片段
- 直接发个报错并不进行任何解释
- ······
以上只是我不喜欢的提问方式,当然包括上一节中提到的几种问题还有其他的比如上来就问我的代码报错了怎么办/代码等,这些都是效率非常低的提问方式,你问我一个问题我再问你具体哪里出问题/你想实现什么之类的好几波交流之后才能大致弄明白你想问的。
所以一定在提问的时候:
- 说清楚自己想实现什么或者这段代码在做什么
- 完整的报错代码与对应代码段
- 确保百度报错代码的第一页没可用教程
- 最好能说一下自己已经做了哪些尝试
一个优秀的提问至少要满足上面的两条,争取一次性让别人定位到你的问题所在之处,我不讨厌花太多文字或者图片描述你的问题,反而对很多直接发个报错截图就问怎么办的问题很反感。不要浪费彼此的时间就是对别人最大的尊重。
所以除非是非常紧急的需要立刻处理bug的情况,其他不做任何思考、自己不做任何尝试、不提供相关代码的提问都是耍流氓!当然如果百度报错提示得到的前三个结果就能解决问题的提问更是耍流氓!
以上就是我想对很多新手朋友们说的,我是以Python、以报错来示例,事实上对于其他语言、对于编程中除了报错之外的任何疑问都可以参考。简单来说就是请不要不做思考、不要做伸手党、不要将别人当成搜索引擎、不要提出低效率的问题。可能对于新手村的你独立解决疑问有点困难,但新手绝不能成为你随意提问的理由,至少看完本文能够有所感悟!并且当你踏入写代码的大门时这就是走向高手的一项必备技能,祝各位都能在报错的战场上磨练出一套属于自己的方法!