如何系统地自学 Python?附上经典学习路线
随着数据科学概念的普及,Python这门并不算新的语言火得一塌糊涂。
想学习Python,该如何入手?
我经常需要根据他们的不同情况,提出对应的建议。这样针对性虽强,但效率不高。这个问题,我还是写出来,让更多的人一同看到吧。
我暂时还没有写Python基础教程的计划。因为在我看来,现有的学习资源已经足够好了。
有现成的资源和路径,为什么许多人依然在为学Python犯愁呢?
在这里还是要推荐下我自己建的Python开发学习群:483546416,群里都是学Python开发的,如果你正在学习Python ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份最新的Python进阶资料和高级开发教程,欢迎进阶中和进想深入Python的小伙伴
因为学习有个效率问题。
Python语法清晰明快,简单易学。这是Python如此普及的重要原因。但是,选择合适的Python学习方式,需要跟你自身的特性相结合。
人群划分的标准是什么?不是你是否计算机相关专业,也不是你是否已经工作,而是一个重要的指标——你的自律能力。
你可能觉得我说的话没有信息含量。自律能力强,学得更好,地球人谁不知道?
可是,自律不够强的人,难道就注定什么也不能学了?
当然不是。
每个人的性格都有不同的特点,没有绝对的高下之分。不信你听听刘宝瑞先生的相声《日遭三险》,就明白了。
自律能力也是这样。只要你能清楚认识自己,就能以更高效的方法来学习新知识和技能。
下面我们分类探讨一下,不同自律能力的人,该如何学Python,才能更高效。
路径I
咱们先从自律能力最差的人说起。
这样的同学,往往是三分钟热度。偶然受到了刺激,发奋要学习Python,以便投入数据科学的事业中。
他会立即跑到图书馆或者书店抱回来一本《X天从入门到精通Python》的书开始啃。结果X天还没到,就顺利跑完了从入门到放弃的全过程。
你没能坚持下来,自己肯定是有责任的。但是最大的问题,在于过度高估自己的自律能力。
对于自律程度低的同学来说,下面这个特性更重要——一切工作都有时限。
老师在前面引领你,助教在旁边督促你,平台用时间表提醒你,论坛上的同学们在用同侪压力推挤你…想偷懒?想三天打鱼两天晒网?很难。
路径II
如果你的自律能力中等偏上,那么你可以选择的面就宽了。
对初学者来说,这种入门方式太好了。要知道,许多人的学习热情,就是被环境配置和依赖软件包安装的坑埋掉的。
路径III
对于自律能力强的同学来说,你的选择可以变得非常简单直接——可以用最受推崇的教材,自己看书学习。
最受推崇的教材,其实是没有的。正如西谚有云:
One man’s meat, is another man’s poison.
这个世界上,就没有哪件东西大家都说好。但口碑非常好的教材是存在的,例如这本起了个怪名字的《笨办法学Python》(Learn Python the Hard Way)。
千万不要被名称迷惑,望文生义觉得这是一本糟糕的Python入门教程。
恰恰相反,这本书的设计,非常适合人们的认知规律。
我们学东西,由浅入深,由易到难,逐步递进。如果一味追求新知,那么之前学的东西会很快遗忘。如果总是原地打转,会带来枯燥和无聊的感觉。还记得高三做的那一年卷子吧?
好的教科书,应该在每一个章节给学习者提供新的知识和内容,提出足够的挑战。但是挑战性不能高到让学习者产生挫败感而放弃。同时也不能忽视在后续内容中把前面所学知识改换面目不断螺旋上升式重复出现。只有这样才能巩固所学,让学习者感受到基础知识的作用,增强学习的愉悦感。
这么说有些抽象,实际上有一本英语教材非常符合上述认知规律。
《笨办法学Python》也是一本这样的书。你需要做的就是把书打开,同时打开一个好用的代码编辑器,开始按书中要求敲代码、运行代码、改代码……
下图是我当初学习时,照着这本书敲的代码。
书中对Python基础内容训练的完备性,至今无出其右者。
顺便说一句,这本书有中文版哦。所以如果你英语不好,完全不用担心。
嘱咐一句,英语真该好好学。拓宽的不仅是你的眼界,也增加了你可能获得的机会。考虑到仔细阅读这部分的读者都是自律性很强的人,我就不用多说了。
挑战
三条基本的Python入门路径讲完了。通过对自己自律能力的清晰理解,相信你可以找到一种适合自己逐渐学习和掌握Python的方式。
如果你不希望自己辛苦学来的Python知识被如此轻易浪费掉,怎么办?
实践
你应该实践。
实践Python技能,未必一定要找个世界500强企业的核心技术部门,“996”工作N年才能完成。
你可以从生活中寻找各种有趣的问题,然后思考能否用Python编程来解决它。
我真正觉得自己初步掌握了Python,就是在完成了我的第一个github项目之后。
项目非常简单,就是用Python作为胶水语言,把一系列工具连接在一起。可以把Markdown撰写的内容随心所欲一键变化成各种格式。
格式包括而不限于:
- PDF/LaTeX;
- Word;
- Bitcron文稿;
- MarkEditor文稿;
- MWeb文稿;
- Bear文稿;
- TextBundle(可以导入MindNode, Ulysses等);
- Reveal.js幻灯;
- 发布版本Markdown(图片一键至七牛图床);
Day One日记。
不要指望自己一出手就能写出完美的代码,要把“迭代”两个字时刻装在心里。这样你才能容忍自己的笨拙,不断提高。正如古人说的那句:
勤学似春起之苗,不见其增,而日有所长。
我在做这个项目的过程中,曾经遇到了中文编码、隐私信息存储、文件名空格处理、绝对与相对路径、发布流程划分、功能解耦合、Web图片地址附带参数……等等一系列的问题。
通过回顾用git版本控制工具记载下来的日志,以及版本对比功能,你可以清楚看到自己是在何时利用什么方法解决了这些问题。然后别忘了,给自己工具箱里的新增小技能打个勾。
一个个小问题逐渐被你攻克的时候,你才能真正感受到所学技能的价值,并且点滴积累自信。
讨论
你学会Python了吗?你是用什么方法学会的?可否把你的学习心得体会分享给大家?
Python学习路线图