一年级学python_你是如何自学 Python 的?

19年5月更新一下

看到有朋友私信我关于python学习的问题

因为平时不怎么答题,所以看私信并不及时

感兴趣的朋友可以在公众号『黑笑小说家』找到我,不定期会写我的学习心得。当然还有更多其他有趣的东西。

以下是原答案:

————————————————————

近期经历了秋招,从一个天坑专业半自学地转了CS,也拿了几个还算满意的算法方向的offer。回想起用手写的python一次次怼过了面试,不禁也想回答一下这道问题。

先介绍一下背景。我大约从大四开始真正接触计算机科学,并且产生了转行的想法。此前作为材料系划水选手,并无任何计算机基础,修过一门较水的《程序设计基础》也早已忘光。大四时已经获得了本专业的保研资格,因此在选修其他院系的课程时较为随意,基本只要保证不挂科即可。一年内我选修了C++程序设计、数据结构、Java程序设计等三门计算机系课程。在数据结构课堂上,听老师提到了一种语法灵活、书写优雅的脚本类语言。当时的课程中要求使用的语言是C++,对于我这个半吊子而言自然颇有难度。于是我不禁对老师口中的python产生了浓厚的兴趣——以简洁和优雅著称的语言,究竟是怎样一种存在?

真正着手学习python已经是几个月之后的事,大约2016年8月底,忙完了研究生入学的诸多事宜,我下定决心开始学习。

第一份学习资料当然是python的官方入门(Tutorial):

装好python,下了一个pycharm之后,基本对着入门文档里的例子一行行敲代码、运行即可。学习的路程与先前的C++、Java无异,无非是先熟悉基本数据类型,掌握语法(比如特有的缩进),学习各种函数和数据结构。Python给人的第一感觉就是封装极多,基本上你想要用它做的事,都可以找到很多现成或半成的函数,如果更深入去探索,还有各种可以自行安装的包。安装包基本可以无脑pip install;行不通的情况下再考虑在pycharm里装,而且基本上都是缺乏依赖的问题,比如A依赖于B,则需要先安装B,成功后再安装A。如果再行不通,则需要去寻找各个包的安装方法或者官方地址。

语法上的简洁主要得益于动态语言的特性,不需要声明变量,也不需要开内存空间(比如new一个对象?),符号里的大括号和分号也都被省略,一切代码块的分隔都依赖于缩进。再加上各种各样的语法糖,让python代码可以完全按照逻辑流程进行编写,把简洁做到了极致。

得益于开学初期的清闲,我大概花了一星期,用课余的零碎时间撸完了官方入门。这时基本已经对python有了初步的认识。但一方面入门文档是英文的,部分表述可能存在一些理解上的偏差,特别是某些计算机方面的术语;另一方面,仅仅认识语法特性,还不足以真正掌握这门语言。于是这期间我又大致刷了两份教程,做了一些相关的练习。

一个是业内知名的@廖雪峰 老师的教学文档;

一个是挪威老哥写的《python基础教程》:

我们又叫它小黄书,因为封皮有一块黄色。这本书当时我是从图书馆借的,当时似乎只有python2版本。不过2、3大同小异,大可举一反三,无需分得太精细。这本书的好处是有一大波的python小项目,每一个都可以操练实践技能。我大概做了3、4个,感觉效果很不错。

当然了,对于自制力不是特别好、自学能力不是那么强的小伙伴来说,找一个线上的课程进行系统的学习,也是一个很不错的选择。比如你也可以试试下面这个免费课程,不用本地安装Python环境,可以直接在网页上敲代码,还有大牛老师带着入门,能少走很多弯路!

这段时间的学习断断续续,大约用了两周多的时间,可以说基本掌握了python这门语言的基础,也就是完成了入门。恰好,那时我正在辅修一个研究生院的“大数据能力提升”项目,里面的一些作业往往不限定语言。我通常会用自己比较熟悉的C++或JAVA先尝试完成作业,然后自己再用Python实现一遍。这么做的后果就是,我会一遍又一遍地发现,Python写作业比前两种静态语言方便太多太多了……于是后来所有的作业都直接上Python。我变快了,也变强了。

研究生一年级接下来的时间忙着怼材料系的论文,甚至专业课我都基本没去上,大多就是吃老本+考前背教材水过考试。这也大大挤压了编程的时间。期间看到一些教授数据分析的文章,入了本《利用python进行数据分析》:利用Python进行数据分析_百度百科​baike.baidu.com

主讲两个用于科学计算和数据分析的包numpy和pandas,作者似乎就是pandas的爸爸,语言精练而诙谐,内容鞭辟入里,读起来十分舒服。无奈时间实在有限,而且pandas语法繁多,常常会记混。那时一心想搞出一篇SCI达到材料系的毕业要求,只在每天晚上会翻翻这本书,有时忙完本专业的工作已接近10点,往往再敲敲代码就到了11点,11点正是系馆闭馆的时间,合上书便是一阵狂奔,黑暗里只听见脚步声在楼道里回荡。断断续续用了两三个月吃透了这本书。每一次学了后面忘前面,十分滑稽。万幸在下学期时投出了文章,有了更多的时间学习和转行。回想起来,感慨良多。

下学期选了门《机器学习》,选了门《统计学在数据挖掘中的应用》,学得比较吃力。万幸数学底子还算可以,翻了两天的线性代数,又翻了两天的微积分,大概把漏下的基础补上。期间断断续续刷了一下吴恩达的机器学习,一知半解。两门课的全部作业都由python完成,得到了较大的锻炼。

此后的研究生二年级论文中刊,遂开始了实习。工作中代码强度瞬间提升,各种技巧也日渐熟稔。一面工作一面学习,虽然多数时候是搬砖,但还是颇有收获。

期间听闻一同实习的老铁的建议开始做leetcode,起初十分吃力,百思不得其解。尔后逐渐适应,基本能想个思路。C++太久不写已然陌生,于是在解题时往往一遍Java,一遍Python,虐并快乐着。断断续续做了一百多道,临近秋招时做的更频繁。

基本都是简单和中等,困难的实在太困难;在大神面前不值一提,不过作为半桶水能做出这些也还算欣慰。期间通过看leetcode各路大神的题解,对数据结构和算法有了全新的认识……对python的各种奇技淫巧也有了一些新的接触。

比如这位大哥:

擅长用1、2行代码解决各种问题。膜一膜就好。

比如这位老哥:

leetcode周赛万年霸榜,20分钟解四道题司空见惯……而我往往只能做出四道题里的两题或者三题,空看时间耗尽,只能伏地膜……

写到这里似乎已经不单单是在说python了,可能有些偏题。但写代码这件事大抵就是熟能生巧吧。虽然我目前还是个半路出家的弱鸡,但回顾我学习的道路,也算是一步一个脚印。相信以后的路会变得越来越好。也希望转行的同学们不要因一时的困难而气馁,坚持下去即是胜利。说到底,学习一项全新的技能,依靠的无非就是坚定的信心和坚持的勇气。突破自我所面临的最大阻碍,往往来自于自己。

最后!以上是我学习Python 的一些经验和体会,坦白说坚持下来挺难的,希望大家都能坚持学习,实现自己的目标。PS:免费的Python入门课程我就先放这了,有需要的小伙伴自取噢!

你可能感兴趣的:(一年级学python)