之前,我经常被问到这样的问题:

  • 看书很枯燥,应该怎么学习 Python?
  • 我是小白,适不适合学习 Python?
  • 有没有书籍或者学习资源推荐?

我都简洁的回答:像玩游戏一样学习,你要从中获得成就感;如果你能学会玩游戏,就能学会 Python。说到游戏,我的公众号取名「Python七号」,就是源自王者荣耀里的「鲁班七号」,它简单易学,输出高,还有句名言:相信科学!

今天展开来说一下。

其实,我从未研究过怎么学习 Python,也从未把学习 Python 当作一个目标。两年前接触 Python,也就业余时间投入点精力,我已经熟练掌握 Python,并可以写爬虫、开发网站,解决不少实际问题。这也确实不算什么成就,但是这个方法我认为对任何想学好 Python 这个技能的人来说都是非常有效的。

首先,你必须无条件相信自己学得会。

没有人是 0 基础,你认识字就不是 0 基础,你上过中学、大学就不是 0 基础,你上过班就不是 0 基础,你有基本的理解能力、思考能力、沟通能力,就不是 0 基础,只要不是 0 基础,你什么都能学会,任何人只有愿意付出时间去搜索、去思考、去练习,没有什么东西是不学会的。如果你学不会,不是因为你基础差,而是你投入的时间不够,练习的次数不够。1 月学不会,那就学 3 个月,不行就 1 年,再不行就 3 年。

其次,学习 Python 不是你的目标,解决问题才是。

假如你已经学会了 Python,然后呢?如果你也不知道然后干啥,那么先不要学习,没有目标的学习,就是在浪费时间。试想 Python 的应用领域那么广,没有一个目标,东一榔头,西一棒子,怎么可能学的好。我们要以终为始,先明确学习的目标,然后对目标分解,针对每一个小目标去学习,每完成一个小目标,就是一个小小的激励,别小看这个激励,正是它推动着我不断学习。

当初我做运维,为了监控作业报错,就想着如何将报错日志发送邮箱,就搜了下,结果找到了 Python 发送邮件的 demo,将其改成通用的函数,用在了运维监控上,几行代码就搞定了,我觉得 Python 很有趣,很高效,运维领域有很大的用处,就研究了 Python 的基础语法,很快就可以上手了。

然后就想着如何将其变得更加通用,准备做成一个守护进程,自动解析指定位置的日志文件,收集报错信息自动发送指定收件人,有了这个目标,就学习了 apscheduler、watchdog、文件、编码、配置文件等相关的知识,很快就实现了,获得小小的成就感。

接下来就想着如何将其优化,准备做成一个 API,其他人调用这个 API 就可以发送报警,再扩展到发送微信、短信等功能,于是就学习了 Python 相关的 http 库,比如 fastApi、Flask、Django、Django-rest-framework,在遇到问题翻看开源代码的过程中学习了大佬的编程技巧,还顺带着学习了编程的设计模式。再次获得成就感。

因为接触了 Django,我就学习了如何开发一个网站,想着如何自己弄一个 Web,来提升上线的效率,有了这个目标,我就学习了 Python 的 Web 技术栈,了解到最流行的做法是前后端分离,于是我就学习了 Vue、nginx、uwsgi、redis 等技术栈,虽然不精,但是已经能为我所用了。正好有朋友有需求,就帮着做了个网站,赚了两万,虽然不多,但这是学习 Python 之后获得的第一桶金,这种激励会持续不断的推动着我去学习。

图片

说了这么多,概括来讲,就是先有个明确的目标,无论它多么小(比如爬取一个网站的数据),无论它多么的俗(为了钱), 只有有了目标,学习 Python 就不会枯燥,而且目标实现了会获得成就感,这种成就感是学习的原动力,会吸引着你持续不断的投入时间,就好比玩游戏上瘾一样,我用 Python 上瘾。

此外,通过主动学习提升知识的留存率。

什么是主动学习?

简单来说,你被别人教,就是被动学习。比如,你看别人的文章、书、视频,当时感觉学会了,过几天可能就忘了,知识的留存率只有 5%。

你去教别人,就是主动学习。比如你写文章讲解一个技术,你做技术演讲,你写一套课程,写书,这都是主动学习,主动学习你需要付出大量的时间和深度思考,学习到的知识也会深刻印在你的记忆里,知识的留存率是 90%。

我目前仍在坚持写公众号,将自己学到的,分享出来,写作的过程中,会发现自己对某个技术也是一知半解,为了能够描述清楚,就要去搜集,去学习,去思考并理解,只有自己明白了才能讲清楚,这个过程也是学习的过程,这也应验了学习的金字塔结构,如下图所示:

图片

主动学习除了写作,还可以做技术分享,做演讲,做直播,准备的过程就是主动学习的过程,这个过程除了让你收获更多志同道合的朋友,还可以积累影响力,有了影响力,就会有更多机会,这些机会推动着你再去学习,良性循环。

图片

一句话,要想学会 Python,你先被动学习,然后主动学习,身边有人请教,就就去教别人,如果教不了别人,就教自己的女朋友或孩子。有本书叫《和孩子一起学编程》,耗子叔推荐过,很有意思。