python初学者的自我修养,找到本身的方向

做者:梁唐前端

来源: 早起Pythonpython

早起导读git

常常会有读者读者在后台问我,学习python有哪些适合新手入门的小项目推荐,因此今天这篇文章我们来聊聊这个问题。对于我来讲Python的应用场景主要是机器学习、深度学习相关,对于其余的场景涉猎很少。所以本文的目的并非列举出一系列小项目给大家练手,而是但愿引导你们思考这个问题,从而找到适合本身的练习项目。程序员

python的误区github

不知道各位初学者如何看待Python这一门语言,又是如何看待程序员的技能,根据个人理解, 这当中可能存在一些误解。其实不论哪一门语言的应用场景可能都不仅是一个方向,每每是多个方向,尤为是Python这种比较成熟而且广受欢迎的语言,它在许多领域都有很高的建树,这就致使了Python能够作的事情很是多,相应的要学习的东西也就很是多。web

也许在新手看来一个比较厉害的Python使用者,应该是全部技术通杀的,对于Python的方方面面都很是了解。然而很遗憾,这是很是困难或者说几乎是不可能的。困难的缘由也是很简单的,由于人的精力是有限的,想要在一个领域作到优秀就已经很是不容易,须要学习大量技术和知识了,更况且掌握全部方向。因此你们对于这样一个问题,应该有一个清晰的答案,对于Python这样一门语言,大家学习它的目的到底是什么?redis

也许你有不少个答案,可是很遗憾,对于你将来职业发展来讲,你可能只能选择其中一个数据库

方向选择后端

若是你玩过暗黑破坏神、魔兽世界或者是相似的RPG游戏的话,那么你对于选择职业这个问题应该很是了解。在咱们刚进入游戏或者是进入游戏不久,咱们就须要面临一次职业选择,职业一旦选择每每不可更改,你就须要在这个职业一直玩下去,若是想要换职业只有从头开始,从新玩一个新的号。设计模式

在职场当中和游戏是很是相似的,咱们最终也须要选择咱们的职业,而且咱们只能选择一个岗位,轻易也是不能更改的。若是要更改,须要从头开始,以前累积的经验会所有清零。由于不一样岗位对于能力的要求是彻底不一样的,因此对于初学者而言,其实也会面临这么一个选择,只不过这个选择是隐形的,当你选择岗位进行投递简历的时候,这个选择就潜移默化的发生了。

Python经常使用的基础语法并很少,在咱们以前的文章当中几乎涵盖了大半。当咱们完成了这部分学习以后,单单学习语法已经没有出路了。再接下来进阶就必需要学习一些应用上的内容,也就是要面临一个技术选型了。

对于Python而言,通常常见的方向有这么几种:web开发、机器学习、网络爬虫、运维、游戏开发

下面我简单介绍一下这几个方向,你们能够对照一下本身的兴趣,选择一个本身感兴趣或者是比较适合的。

Web开发

Web开发应该是当下最广泛的程序员的工做岗位了,Python在web上的应用主要是web的后端开发,也就是负责服务器逻辑处理这个部分。

咱们都知道在后端这个领域目前国内最吃香的语言应该是Java,几乎大半的公司都是使用Java做为后端语言。Java以后的其余几门语言我也难分伯仲,简单列举一下有新兴的Go,有古老的PHP,固然还有Python,还有已经几乎绝迹的C++和C#。Python在这个领域当中应该只能算是不算特别小众,整体来讲仍是偏小众的

小众的缘由和Python自己的特性有关,由于Python是解释型语言,而不是编译型语言。因此和Java、Go这种编译型语言相比,在性能上自然就要劣势。而且因为Python全局锁的限制,致使了Python多线程在计算密集型的并发场景当中表现很是糟糕,因此不多有大公司会使用Python做为后端主力语言。据我了解国内知名一些的应该只有豆瓣、知乎,国外的有YouTube,但听说有些已经迁移到其余语言了,有的已经有相应的迁移计划了。

Python在后端的主要优点在于敏捷,也就是开发效率比较高。Python的Django、Falsk等框架仍是很是完善以及好用的,咱们能够很快地从零开始搭建出一个像样的后端来,而且迭代的速度也很快。因此对于一些须要小步快跑对于性能要求不高的小公司,可能会选择Python,也就是大公司几乎不会选择Python做为Web后端的开发语言,技术栈也必然彻底不一样。

若是你须要选择这个方向,那么你除了要学习Python后端开发的相关知识,好比Django、Flask等框架以外,对于计算机网络以及前端也须要必定的了解,这些也是后端工程师的必修课。

整体来讲,Python后端这个发展方向相对比较平坦,后期发力的难度比较大,天花板比较低。学习难度和Java后端相比可能要稍微简单一些,就业压力应该也还好,相关的岗位虽然不太多但也不会太少。

若是要选择这个领域的话,能够选择一些比较常规的项目做为入门的项目。好比搭建一个我的博客,或者是XX管理系统,等这些熟练了以后就能够学习更多其余的工具库了,好比数据库ORM框架、kafka、redis等这些经常使用的中间件。把这些内容再结合到web当中,建立出新的项目。等这一块也差很少了,接下来就能够研究研究架构设计、设计模式等等进阶的内容了。

机器学习

这个领域我相对比较了解一些,对于机器学习来讲,Python目前是妥妥的主力语言。早年还能看到一些使用R来作机器学习的工程师,目前已经几乎看不到了,几乎是清一色的Python。可是老实说机器学习当中Python只是起到胶水语言的做用,几乎全部核心的实现逻辑都不是Python支撑的。

在机器学习当中对于Python原生的内容要求很是普通,只须要会基本的语法,了解迭代器、生成器几乎就足够了。由于大部份内容都是经过框架或者是工具来实现的,Python只是把这些逻辑粘合到一块儿而已。这个方向的从业者的技能点在Python上的很是少,大部分都在机器学习的相关理论、一些库工具的使用、深度学习框架的使用、数据处理方面的经验。

而且机器学习自己就是一个比较大的领域,它也有不少方面的应用。好比搜索、广告、推荐这些传统的应用场景,以及CV(计算机视觉)、NLP(天然语言处理)、风控等等比较新一些的领域。因此选择了机器学习这个大方向,而且完成了基础知识的学习以后,仍是要再面临一次选择的,由于还须要选择进一步细分的小方向。根据我我的的经验来讲它们的发展前景是推荐、搜索、广告 > NLP > CV > 风控,这只是我我的的判断,仅供你们参考。

机器学习这个方向总体来讲前景是很是不错的,目前几乎大中小型的公司都有机器学习或者是深度学习的岗位。虽然岗位多,可是竞争并不低,由于想要涌进来的人实在是太多了。尤为是这两年AI火热,大量的人想要挤进这个行业中来,因此招聘门槛仍是不低的。

若是你想要选择这个方向的话,只须要基本的Python语法便可,可是须要对机器学习这个领域有着比较深刻的学习。好比机器学习的核心概念、经常使用的一些模型、数据处理的一些方法、模型效果的评估标准等等。等对机器学习的理解足够了,就能够找kaggle、天池大数据等一些比赛来实战一下。

Python爬虫

爬虫这个方向你们也不陌生,不少人应该看过一些相关的负面新闻,好比窃取用户隐私或者是窃取了某某公司的数据等等。实际上爬虫的本质是利用程序模拟人工对网页进行访问,从而将网页当中相关有价值的信息存储下来

Python因为语法简单,而且网络相关的工具库很是完善,并且不须要通过编译就能够直接运行。更重要的一点是Python的全局锁在网络请求这种IO密集型的场景当中很是合适,并不会影响效率。并且Python能够很方便的整合其余语言的功能以及特性,使得Python作爬虫很是合适,以致于市面上大部分的爬虫工程师都是以Python为语言开发的。而且如今也衍生了许多分布式爬虫的框架和工具。

因为你们都使用爬虫,而一些大公司不肯意本身的相关信息被竞争对手获取了去。举个例子,假设某东把淘宝全部的商品信息都爬取了下来,而后针对性的降价来强行吸引用户,那么显然对于淘宝是一个打击。为了防止相似以及其余不利于公司的状况出现,这些大公司都会设置一些反爬虫的机制。好比在请求来临时会判断是不是机器人,或者是会限制一个ip最多访问的商品数量等等。

既然有反爬机制,那么天然也有破除反爬机制的机制。因此公司里真正爬虫工程师每每的平常工做就是和一些大公司的反爬工程师斗智斗勇。你设置了这个反爬机制,我就想一个办法来破除。明天你发现了个人方法作了修补,我再继续想办法……而且在编写爬虫以前,须要作大量网页的分析,找到网页或者是应用中数据的源头api。有些公司会把api隐藏起来,或者是须要必定的校验才能访问,那么就须要设置一些方法针对性的破除以后才能使用爬虫。

有些人不喜欢这种斗智斗勇不少,开发时间不多的工做,而有些人就乐此不疲,你们能够对照一下自身的状况作一个选择。若是想要选择这个方向的话,能够从一些公开的没有设置反爬机制的数据开始,学习一些目前比较先进的爬虫框架,以后再一步步提高难度,去试着破除大公司的反爬机制,成为一个优秀的爬虫工程师。

运维和游戏开发

老实讲这两个领域个人了解实在是很少,因此硬着头皮简单说说,水平有限,若是有错误还请你们海涵。

运维在咱们都知道就是负责维护机房机器环境、项目发布上线等工做的,因为如今公司用到的机器的数量愈来愈多,整个发布以及维护的流程也就愈来愈麻烦。以前极其少的时候还能够人工一台一台搞定,如今机器多了还使用人工来干显然就不现实了。为了解决这个问题,因此如今先进的运维会使用Python编写脚本,来批量操做机器安装环境或者是发布项目等等。

说白了其实也是把Python当成是脚本语言这样的工具来使用,核心的能力其实仍是偏在Linux命令、操做系统、分布式集群这一个部分。对于运维这个领域,我我的感受和机器学习差很少,Python只是纯工具,你们想要入门项目的话,可能仍是要以运维相关的技能为主,使用Python来做为工具辅助。

游戏开发我稍稍了解一点,以前用Python作过一些简单的小游戏。Python当中的pygame很是好用,编写小游戏很是合适。而且Python也能够接入Unity,github里能搜到很多使用Python作出来的游戏。可是有没有游戏公司招聘Python程序员来进行游戏开发我就不清楚了,毕竟不是作这个行业的,但至少你们作一些小游戏来自娱自乐确定仍是没问题的。若是要练手的话能够考虑作一个2048,doodle jump这些比较简单的小游戏。

小结

若是只是寻找Python的新手入门项目,网上随便搜索一下出来的结果是很是多的。可是这并无太多的意义,由于这些项目并不必定适合每个人。而在明确本身想要从事的方向以前,合适与不合适也无从谈起,因此但愿你们均可以先明确本身的方向,以后再找到对应的进阶道路则要容易得多。因此若是你以前只是想要学好Python这门语言,可是又没有考虑过方向相关的话,我建议你能够思考一下这方面的问题。

相关文章
相关标签/搜索