大家都在学Python,你和别人的差距在哪?(文末附赠教程一套)

据我所知,Python大概于2000年前后(或许实际情况更早一些)传入国内,我2002年的时候在安全焦点和绿盟科技论坛上看到几个大牛在使用这个“脚本语言”,但是当时除了在黑客攻防这个极小的圈子里有人使用和交流之外,似乎并没有引起大众的重视。

时光如梭,后来的日子里Python一路高歌并迅速渗透到众多领域,居然被TIOBLE评为2010年度语言,然后更是一发不可收拾,随着机器学习、大数据、引力波、深度学习、树莓派等新名词和新领域的应用越来越广泛,Python似乎一夜之间就火起来了。目前有几百所高校和高职高专开设了Python课程,浙江、北京等几个省市正在计划在高中“信息技术”课程中引入Python,据说2018年全国计算机等级考试二级也要加入Python模块,大有全民学Python和非Python不编程的趋势。

随着我中华儿女的加入,Python的市场占有率和关注热度逐月上升,在编程语言排行榜上的位次也快速上升,终于在2017年7月在IEEE Spectrum 给出的编程语言排行榜攀登上第一位的巅峰。

大家都在学Python,你和别人的差距在哪?(文末附赠教程一套)

TIOBLE在2017年10月给出的编程语言排行榜上,Python也是居高不下,比同期增长0.03%,而老牌的Java、C则继续保持大幅度下滑趋势,虽然目前仍保持着前两位的好名次,但若没有大的意外,很快将会优势不再。

大家都在学Python,你和别人的差距在哪?(文末附赠教程一套)

GitHub在2017年10月公布的年度受欢迎编程语言中,Python排名第二位,超过了Java和C/C++/C#。

大家都在学Python,你和别人的差距在哪?(文末附赠教程一套)

然而,作为Python大军中的一员,你是否曾经困惑,或者是否正在困惑:我为什么要学Python?我到底学Python干什么?为什么自己学了那么久还是什么都做不了?为什么感觉别人都那么厉害,短短几个月就能做那么多事情?而我还在一遍又一遍反复地看基础语法?这到底是为什么?

大家都在学Python,你和别人的差距在哪?(文末附赠教程一套)

这里,我根据自己不全面的了解简单分析一下目前Python学习者可能存在的几个问题。虽然不是每个学习者都存在这些问题,但还是比较共性的,有则改之,无则加勉吧。

1、缺乏Python内功的修炼:目前很多Python程序员喜欢上来就学习各种扩展库,虽然确实有些问题似乎很快就解决了,但是有时候遇到甚至基本的语法问题也很茫然,不知道从哪里下手,这是Python内功不行的一种表现。也有些朋友有其他语言的基础,然后粗略看了一下Python的语法就开始写代码了,缺乏深入理解,导致写出来的Python代码不纯正,带有浓浓的其他语言味道,这样的代码不仅啰嗦,也发挥不出Python的优势,白白糟蹋了这么好的一个语言。

练拳不练功,到老一场空。道理大家都知道,但是内功从何而来呢?我个人觉得,内功就是基本功的长期积累。语法、运算符、内置对象、标准库对象,这些基本功除了要正确理解之外,还要千锤百炼,要有大量的练习才行的。

知道了基本功有哪些之后,还要知道自己的弱项在哪里,是基本语法不熟悉,还是内置对象用法没掌握好,还是不清楚标准库对象?如同打篮球一样,比赛时是否能取胜,取决于弹跳力、爆发力、身体协调能力、耐力、队友配合默契程度、投篮准确程度、对场上局势的准确判断能力等多方面的因素。找到弱项,然后重点练习,整体和局部交替练习,这样才能快速提高。就像做馒头揉面一样,整体揉一揉,看看哪个地方不好就重点揉揉,哪里有面疙瘩就捏开,然后再整体揉,不断重复这个过程,直到满意为止。

2、缺少相关领域的内功:汝果欲学诗,工夫在诗外。天天背“天对地,雨对风,大陆对长空”、“平仄平仄平平仄,仄平仄平仄仄平”、“记叙文六要素为时间、地点、人物、事情的起因、经过和结果”这样的基本常识是没有用的。纵使满腹经纶,没有丰富的人生阅历很难写出优美并且有内涵、有灵魂的诗,写代码也是如此。一段好的代码应该像诗一样美,其中的灵魂就是相关领域的理论和算法。只有饱读相关领域的书籍和论文,不断积累、沉淀和实战,才能达到“腹有诗书气自华”的境界。

不管什么语言,都只是一个用来描述和表达思想或算法的工具,Python只是众多工具之一,永远都不会是唯一的选择,但在很多场合中确实是个非常好的选择。在学习Python的过程中,一定要结合某个特定领域的内容去学习和应用。

要写爬虫程序,只会Scrapy和BeautifulSoup4这样的扩展库是不够的,还应该了解HTML、CSS、正则表达式和HTTP、HTTPS协议的东西,而设置了反爬机制的网站则要求掌握更多的知识和技术。

想做图像处理,只会pillow和scipy这样的扩展库是不够的,还要了解数字图像处理领域的知识,如果不知道啥叫直方图、不知道边缘提取和模式识别算法原理、不知道各种变换的精髓,等等,那会了pillow基本操作又能做什么呢?

想做计算机图形学程序,只知道pyopengl扩展库而不知道OpenGL运行机制和各函数参数含义以及纹理映射、光线跟踪等理论知识,也是啥也做不出来的。

想做游戏编程,只了解pygame扩展库是不够的,还要懂游戏策划、人机交互、游戏心理学、人工智能、音频处理、视频处理等等;想做机器学习,只知道sklearn之类的扩展库是不够的,还要知道聚类算法、协同过滤算法、KNN、支持向量机、线性回归、逻辑回归、关联规则分析等若干算法才行;想做深度学习,除了tensorflow之类的扩展库,还要知道深度前馈神经网络、深度卷积神经网络、深度堆栈神经网络、深度递归神经网络等大量理论和算法。。。不胜枚举。

3、下功夫太少:懒就一个字。很多人深得“拿来主义”精髓,总是喜欢到处复制代码然后拼凑,最好是能有可以直接使用的代码,自己能不写就不写。却不知“纸上得来终觉浅,绝知此事要躬行”、“由招熟而渐悟懂劲,由懂劲而阶及神明,然非用力之久,不能豁然贯通焉”。掌握了正确的学习方法之后,多练,可以说是攀登Python高手之巅最重要的途径。例如,我的几本Python系列图书上每个案例都有源码,但还是很多学生问我能不能提供源码文件,却不肯花点时间自己把代码打一遍并且把遇到的问题调试一下整理一下。试想,拿到源码放到IDLE、Anaconda3、PyCharm、wingIDE、Eclipse或其他Python IDE中运行一下,欧耶,结果完全正确,开心了,这个问题过去了,但是,这样子自己能学到多少呢?学任何东西都一样,功夫是练出来的,不是看出来的,更不是想出来的。

4、永远都不要妄想什么全栈:一个作家文笔再好,也不可能妄想诗词散文记叙文议论文等啥都会写。Python确实在很多领域都有重要应用,但这并不说明学Python就要啥都会做。有人可能会说“董老师,我不认同你这观点,我看你《Python可以这样学》、《Python程序设计(第2版)》和《Python程序设计开发宝典》几本书中还有微信公众号“Python小屋”里至少涉及了十几个领域的应用案例,为啥告诉我们要专一?”,这绝对是个好问题。但我是当老师的啊,除了在自己研究方向内尽可能深入研究之外,我更重要的职责是把尽可能多领域的应用方法介绍给学生和读者朋友,说不定哪位朋友就恰好需要我整理的案例。并且我有多年的知识积累(从教17年来讲过计算机相关专业差不多三分之二的课程,最多的时候曾经连续3个学期每周50多节课,每学期同时讲7门不同的课程,还分别使用C#和Python开发过多套完整的系统)。尽管如此,对于某个特定应用领域的深层次应用,我还真不一定知道,并且这种可能性还是很大的,也是正常的。

还有些朋友确实没有想过做全栈,但是一直在Python的多个应用领域摇摆不定,一会儿觉得这个有意思就开始学了,稍微一深入又觉得太难,过几天又看那个好玩就开始学,过几天又觉得不适合自己。。。。。这样肯定是不行的,一定要结合自己的专业去学Python用Python,自己主导Python学习和应用路线,而不能让Python牵着鼻子走。否则的话,再过二十年,我们来相会,你还在苦练Python基本语法!!!

最后,想学习Python的小伙伴们!

请关注+私信回复:“学习”就可以拿到一份我为大家准备的Python学习资料!

相关推荐