关于python:Python初学者的自我修养找到自己的方向

48次阅读

共计 4402 个字符,预计需要花费 12 分钟才能阅读完成。

对于我来说 Python 的利用场景次要是机器学习、深度学习相干,对于其余的场景涉猎不多。因而本文的目标并不是列举出一系列小我的项目给你们练手,而是心愿疏导大家思考这个问题,从而找到适宜本人的练习我的项目。

Python 的误区

不晓得各位初学者如何对待 Python 这一门语言,又是如何对待程序员的技能,依据我的了解,这当中可能存在一些误会。其实不管哪一门语言的利用场景可能都不只是一个方向,往往是多个方向,尤其是 Python 这种比拟成熟并且广受欢迎的语言,它在许多畛域都有很高的建树,这就导致了 Python 能够做的事件十分多,相应的要学习的货色也就十分多。

兴许在老手看来一个比拟厉害的 Python 使用者(比方我),应该是所有技术通杀的,对于 Python 的方方面面都十分理解。然而很遗憾,这是十分艰难或者说简直是不可能的。艰难的起因也是很简略的,因为人的精力是无限的,想要在一个畛域做到优良就曾经十分不容易,须要学习大量技术和常识了,更何况把握所有方向。所以大家对于这样一个问题,应该有一个清晰的答案,对于 Python 这样一门语言,你们学习它的目标到底是什么?

兴许你有很多个答案,然而很遗憾,对于你将来职业倒退来说,你可能只能抉择其中一个。

方向抉择

如果你玩过暗黑破坏神、魔兽世界或者是相似的 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 的全局锁在网络申请这种 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 这门语言,然而又没有思考过方向相干的话,我倡议你能够思考一下这方面的问题。

以上就是本次分享的所有内容,想要理解更多 python 常识欢送返回公众号:Python 编程学习圈 ,发送“J”即可收费获取,每日干货分享

正文完
 0