对我来说,Python的应用场景主要是机器学习和深度学习相关,其他场景经验不多。因此,本文的目的不是列出一系列小项目供大家练习,而是引导大家思考这个问题,从而找到适合自己的练习项目。Python的误区不知道初学者是怎么看待Python这门语言的,也不知道他们是怎么看待程序员的技能的。根据我的理解,可能存在一些误解。其实任何一门语言的应用场景可能都不是只有一个方向的,往往是多方向的,尤其是Python这种比较成熟和流行的语言,在很多领域都取得了很大的成就,这就导致了很多东西你可以用Python来做,相应的要学的东西也很多。或许在新手看来,相对强大的Python用户(比如我)应该是所有技术的高手,对Python的方方面面都了如指掌。不幸的是,这非常困难或几乎不可能。难的原因也很简单,因为人的精力是有限的,想要在一个领域做到优秀并不容易,需要学习大量的技术和知识,更不用说掌握各个方向了。所以对于这样的问题大家应该都有一个明确的答案。对于Python这样的语言,你学习它的目的是什么?也许你有很多答案,但遗憾的是,对于你未来的职业发展,你可能只能选择其中一个。方向的选择如果你玩过暗黑破坏神、魔兽世界或者类似的RPG游戏,那么你应该对选择职业这个问题非常熟悉。当我们刚进入游戏或者刚进入游戏不久的时候,我们都需要面临职业选择。职业一旦选定,往往是一成不变的。你需要继续在这个职业中打球。如果你想改变你的职业,你必须从头开始,玩一个新的。数字。在职场上,和游戏很像。我们最终也需要选择自己的职业,而且只能选择一个职位,不能轻易改变。想要改变,需要从头开始,所有积累的经验都会清零。因为不同的岗位对能力的要求是完全不同的,初学者其实也会面临这样的选择,只是这种选择是无形的。当你选择投递简历的职位时,这个选择就会在潜移默化中发生。Python中常用的基本语法并不多,我们之前的文章中已经介绍了将近一半。当我们完成了这部分的学习后,单单学习语法就没有出路了。那么要进阶,就必须学习一些应用内容,也就是要面临一个技术选型。对于Python,常见的方向有几个:网页开发、机器学习、网络爬虫、运维、游戏开发。下面我简单介绍一下这几个方向。您可以比较自己的兴趣,然后选择您感兴趣或更适合的。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、涂鸦跳等比较简单的游戏。综上所述,如果你只是找Python入门级的项目,随便在网上搜索一下就能找到很多结果。但这没有多大意义,因为这些程序不一定适合所有人。在明确自己想要追求的方向之前,合不合适是谈不上的,所以希望大家先明确自己的方向,然后再找到对应的进阶路径就会容易很多。所以如果你之前只是想学好Python这门语言,没有考虑好方向的话,建议你考虑一下。以上就是本次分享的全部内容。想了解更多python知识,请前往公众号:Python编程学习圈,发“J”免费领取,每日干货分享
