你也是这样学习Python 的吗?
互联网时代
其实python非常适合初学者入门。相比较其他不少主流编程语言,有更好的可读性,因此上手相对容易。自带的各种模块加上丰富的第三方模块,免去了很多“重复造轮子”的工作,可以更快地写出东西。配置开发环境也不是很复杂,mac和linux都内置了python。另外据我所知,不少学校也开始使用python来教授程序设计课程(比如本人的母校)。
我就是完全通过网上资源自学python的。
从在校时候用python接活赚零花钱,到在创业公司用python开发商业网站和游戏后台。所有遇到的问题,几乎都可以从互联网上的公开资源找到答案。
关于自学python,个人最大的3点经验:
找一本浅显易懂,例程比较好的教程,从头到尾看下去。不要看很多本,专注于一本。把里面的例程都手打一遍,搞懂为什么。我当时看的是《简明python教程》,不过这本书不是非常适合零基础初学者。零基础推荐《与孩子一起学编程》,或者看我PythonQQ群:882492178内有不错的学习资料及课程。
去找一个实际项目练手。我当时是因为要做一个网站,不得已要学python。这种条件下的效果比你平时学一门新语言要好很多。所以最好是要有真实的项目做。可以找几个同学一起做个网站之类。注意,真实项目不一定非要是商业项目,你写一个只是自己会用的博客网站也是真实项目,关键是要核心功能完整。
最好能找到一个已经会python的人。问他一点学习规划的建议(群内有大佬),然后在遇到卡壳的地方找他指点。这样会事半功倍。但是,要学会搜索,学会如何更好地提问。没人愿意帮你写作业或是回答“一搜便知”的问题。
然而,别人的经验未必能完全复制。比如我没有说的是,在自学python之前,我已在学校系统学习过其他的编程语言。
对于完全没有编程经验的初学者,在学习python的时候,面对的不仅仅是python这门语言,还需要面临“编程”的一些普遍问题,比如:
从零开始,不知道从何入手,找了本编程教材发现第二章开始就看不懂了
缺少计算机基础知识,被一些教程略过的“常识性”问题卡住
遇到问题不知道怎么寻找解决方案
看懂语法之后不知道拿来做什么,学完一阵子就又忘了
缺少数据结构、设计模式等编程基础知识,只能写出小的程序片段
所以除了前面说的3点经验,给初学编程者的额外建议:
首先要有信心。虽然可能你看了几个小时也没在屏幕上打出一个三角形,或者压根儿就没能把程序运行起来。但相信我,几乎所有程序员一开始都是这么折腾过来的。
选择合适的教程。有些书很经典,但未必适合你,可能你写了上万行代码之后再看它会比较好。
写代码,然后写更多的代码。光看教程,编不出程序。从书上的例程开始写,再写小程序片段,然后写完整的项目。
除了学习编程语言,也兼顾补一点计算机基础,和英语。
不但要学写代码,还要学会看代码,更要会调试代码。读懂你自己程序的报错信息。再去找些github上的程序,读懂别人的代码。
学会查官方文档,用好搜索引擎和开发者社区。
我在学习的过程中,深深的觉得对于成人或者进入职场的人来说,学习一门新的知识,目的不在于积累,而在于解决问题。
所以这就要求我想明白3个问题:
1,学习python,要解决什么问题?解决这个问题,是要为了确定学习方向。
2,要学哪些东西?解决这个问题,是为了规划好学习路径,建立学习地图。
3,怎样学?解决这个问题,是为了找到高效学习的方法。
1,选择好方向
我要学习python的目的不是为了解这门语言,而是为了要学会运用这门语言来解决问题。
但python的应用方向,实在太广了。在python基础知识学完之后,如果应用方向不同,要学习的东西也会大不同。
我不能说我要做web开发,学完python基础知识,跑去学numpy,pandas等知识,也不能说我要用python做数据分析,学完python基础知识,然后就跑去学django,flask框架。这个道理,就跟我们想要去泰国旅行,肯定不会买去日本的机票一样,很简单,但是我们不得不承认,还是会有人犯迷糊,上来就开干。
我学习python,是因为在工作中慢慢了解到python在数据分析方面,基本涵盖了“数据获取→数据处理→数据分析→数据可视化”这个流程中每个环节,是数据分析的利器,话说这风骚的操作,也是没谁了。
2,规划好路径
当我确定好方向后,下一步骤就是顺着这个方向,建立好我自己的学习路径地图。
这个路径是1个系统性的逻辑主线,这个主线会让我知道每个部分需要完成的目标是什么,需要学习哪些知识点,哪些知识是暂时不必要的。然后每学习一个部分,我就能够有一些实际的成果输出,利用成果产出来形成正向刺激,激励后续的学习。
而且,如果我们身在职场,大多时候我们是没有很大块的时间来集中学习的。我们的学习时间被分割在了一些碎片化的时间里。在碎片化的时间里,系统性的学习一门知识,更需要有一个贯穿前后,系统的逻辑主线,来串联所有相关碎片化的时间的学习。
当我确定好学习python的数据分析知识,就按照数据分析的流程“数据获取→数据处理→数据分析→数据可视化”这个路径,给自己建立了学习地图:
1,python基础知识
2,爬虫基本知识+sql
3,numpy
4,pandas
5,matplotlib
6,sklearn
7,统计学与概率论
3,对基本概念建立认知
python是我学习的第一门编程语言,我在开始学习python的时候,是一个连什么是字符串都不知道小白。所以对我来说,最重要的开始是,首先对这一领域的基本概念建立认知!
事实上,对一门领域完全零基础的人,想要开始学习它的话,真正重要的工作是先对这门领域的基本概念建立认知。
比如我在看到教程中有句话是“为变量赋值”,那我至少得知道,什么是变量?赋值是什么意思?
不知道为什么这么重要的一个开始,竟没有答案提到,更不知道是大家都天赋异禀,觉得不屑于提起这基础的步骤,还是很多人已经忘记了从小白一路走过来的痛苦和挣扎。人是会篡改记忆的,会认为现在拥有的都是轻松获得的,但真实的经历永远都是坎坷曲折的。
看到答案中又不少提到
老师的博客,廖雪峰老师的博客当然是极好的,但说实话,对完全零基础的人还是不适合(如果我们之前有其他编程语言基础,看廖老师的博客是最好的),甚至连《python简明教程》也不适合。
我遇到的第一个坑,就是我作为一个连什么是字符串都不知道小白,就去看廖老师的教程,然后就没有然后了。后来在网上看到
这本书用生活中常见的物品做类比和视觉化解说,用极其通俗易懂的语言,让我对python语言以及编程领域的基本概念建立了基本认知。
我想我们一定遇到不少的教程,帮我们解释概念的时候,上来就是这个概念其实可以理解成C的XXX,C#的XXX,我他么的要学过C,还他么跑过来问小白如何入门python?
这些教程典型的通病就是,教学者用一个我们不懂的概念去解释另一个我们不懂的概念,然后我们还是不懂。因为教学者提前预设了作为0基础的我们的立场:已经有其他编程语言基础,只是没有接触python。
但其实,对真正如我一样的0基础的小白来说,大多时候,python是我们学习的第一门编程语言。所以这个时候,对我们来说,学习python,不仅是学习这门语言本身,还是在借着这门语言,帮我们建立对编程世界的一些基本概念的认知。
当我入了门之后,就是顺着在第二步建立的学习路径,一路升级打怪,毕竟,我的征途是星辰大海!
4,最后,学习中需要注意的问题
A,一开始绝不陷入底层原理和细枝末节的纠缠
这个坑,是把我坑的最深的坑。
举个例子,我学到函数的时候,我在开始的时候只需要,学会怎么定义函数,怎么调用函数这些基础知识,完全不需要一开始就深入到,研究函数参数的传递规则,到底是值传递,还是引用传递。
不是说这底层知识不重要,至少在入门的时候,我们不用一上来就深入这个层面。因为知识的学习,是一个线性的,从潜入深的顺序。如果一开始,就眉毛胡子一把抓,不分主次,可能我们很快就会体会到“从入门到放弃”是一种什么样的感觉。
而且我们在后续的学习过程中,其本身就是在“运用中深入理解,在深入理解中优化应用”。相互印证理解,是一种自然而然的深入学习过程。
B,最好是按照系统性的课程或书本来学习
既然在这个领域是新手,先接受一个已经存在的系统,再在上面修修改改,是最适合的方案。作为新手,如果依靠自学来学习一门领域的知识,根据我的经验,我依然认为最好的老师,仍旧是成体系的课程或书本。
网上的文章或帖子,其实非常不适合充当我们系统性的学习一门知识的教材,因为它是非常碎片化的知识,东一榔头西一棒子,不成体系。不要指望自己能把散落的信息整合成系统的,那是高手要做的事情。不过这些东西,可以作为我们对某些细节的查漏补缺的参考。
C,以能用起来,解决问题为指导原则
在工作中,需要的更多的是一种解决问题的工程性思维,所以很多时候,我们能掉包解决问题,就没必要自己造轮子。
举个例子,boss要去机场,那我只要会开车,驱车把boss送到目的地就行,而不需要我去研究怎么怎么造车轮,怎么造发动机,怎么造电瓶。。。。。。
当然,如果我们学有余力,能深入,肯定是只好不坏。但还是那句话,开始的时候,不眉毛胡子一把抓。
D,没有什么牛逼的事情是能够速成的,越是底层的、收益周期越长的技能越是这样。
“大道甚夷,而人好径,终为所误”。我们总会在踩了无数的坑后,才恍然大悟:捷径往往是最长的弯路。学习一门领域的知识,对于普通人人在短时间内从0到1入个门,倒是不难,但是从1到10,到100,进阶为高手,没有长时间的投入和刻意练习,无异于痴人说梦。当我理解这个道理,也知道自己资质并非属于天选之子的时候,就不会急于求成而去费尽心思想找到一条捷径:试图用3个月的时间,去完成别人用了3年才能做到的事情。
PythonQQ群:882492178内有不错的学习资料及课程。
好了,今天分享到这里,谢谢你那么好看还看小编的文章,记得关注小编哦,小编会更加努力去给大家分