是否非常想学好 Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太高,心里默默敲着退堂鼓?
幸运的是,Python 是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间和精力。
在这里还是要推荐下我自己建的Python开发学习群:483546416,群里都是学Python开发的,如果你正在学习Python ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2018最新的Python进阶资料和高级开发教程,欢迎进阶中和进想深入Python的小伙伴
Python 的设计哲学之一就是简单易学,体现在两个方面:
语法简洁明了:相对 Ruby 和 Perl,它的语法特性不多不少,大多数都很简单直接,不玩儿玄学。
切入点很多:Python 可以让你可以做很多事情,科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,总有一个是你感兴趣并且愿意投入时间的。
废话不多说,学会一门语言的捷径只有一个: Getting Started
¶ 起步阶段
任何一种编程语言都包含两个部分:硬知识和软知识,起步阶段的主要任务是掌握硬知识。
°1 硬知识
“硬知识”指的是编程语言的语法、算法和数据结构、编程范式等,例如:变量和类型、循环语句、分支、函数、类。这部分知识也是具有普适性的,看上去是掌握了一种语法,实际是建立了一种思维。例如:让一个 Java 程序员去学习 Python,他可以很快的将 Java 中的学到的面向对象的知识 map 到 Python 中来,因此能够快速掌握 Python 中面向对象的特性。
如果你是刚开始学习编程的新手,一本可靠的语法书是非常重要的。它看上去可能非常枯燥乏味,但对于建立稳固的编程思维是必不可少。
下面列出了一些适合初学者入门的教学材料:
(1.)「笨方法学 Python」:http://learnpythonthehardway.org/book/
这本书在讲解 Python 的语法成分时,还附带大量可实践的例子,非常适合快速起步。
(2.)「The Hitchhiker’s Guide to Python!」:The Hitchhiker’s Guide to Python!
这本指南着重于 Python 的最佳实践,不管你是 Python 专家还是新手,都能获得极大的帮助。
(3.)「Python 官方文档」:Our Documentation
实践中大部分问题,都可以在官方文档中找到答案。
(4.)辅助工具:Python Tutor
一个 Python 对象可视化的项目,用图形辅助你理解 Python 中的各种概念。
Python 的哲学:
用一种方法,最好是只有一种方法来做一件事。
学习也是一样,虽然推荐了多种学习资料,但实际学习的时候,最好只选择其中的一个,坚持看完。
必要的时候,可能需要阅读讲解数据结构和算法的书,这些知识对于理解和使用 Python 中的对象模型有着很大的帮助。
°2 软知识
“软知识”则是特定语言环境下的语法技巧、类库的使用、IDE的选择等等。这一部分,即使完全不了解不会使用,也不会妨碍你去编程,只不过写出的程序,看上去显得“傻”了些。
对这些知识的学习,取决于你尝试解决的问题的领域和深度。对初学者而言,起步阶段极易走火,或者在选择 Python 版本时徘徊不决,一会儿看 2.7 一会儿又转到 3.0,或者徜徉在类库的大海中无法自拔,Scrapy,Numpy,Django 什么都要试试,或者参与编辑器圣战、大括号缩进探究、操作系统辩论赛等无意义活动,或者整天跪舔语法糖,老想着怎么一行代码把所有的事情做完,或者去构想圣洁的性能安全通用性健壮性全部满分的解决方案。
很多“大牛”都会告诫初学者,用这个用那个,少走弯路,这样反而把初学者推向了真正的弯路。
还不如告诉初学者,学习本来就是个需要你去走弯路出 Bug,只能脚踏实地,没有奇迹只有狗屎的过程。
选择一个方向先走下去,哪怕脏丑差,走不动了再看看有没有更好的解决途径。
自己走了弯路,你才知道这么做的好处,才能理解为什么人们可以手写状态机去匹配却偏要发明正则表达式,为什么面向过程可以解决却偏要面向对象,为什么我可以操纵每一根指针却偏要自动管理内存,为什么我可以嵌套回调却偏要用 Promise...
更重要的时,你会明白,高层次的解决方法都是对低层次的封装,并不是任何情况下都是最有效最合适的。
技术涌进就像波浪一样,那些陈旧的封存已久的技术,消退了迟早还会涌回的。就像现在移动端应用、手游和 HTML5 的火热,某些方面不正在重演过去 PC 的那些历史么?
因此,不要担心自己走错路误了终身,坚持并保持进步才是正道。
起步阶段的核心任务是掌握硬知识,软知识做适当了解,有了稳固的根,粗壮的枝干,才能长出浓密的叶子,结出甜美的果实。
¶ 发展阶段
完成了基础知识的学习,必定会感到一阵空虚,怀疑这些语法知识是不是真的有用。
没错,你的怀疑是非常正确的。要让 Python 发挥出它的价值,当然不能停留在语法层面。
发展阶段的核心任务,就是“跳出 Python,拥抱世界”。
在你面前会有多个分支:科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,这些都不是仅仅知道 Python 语法就能解决的问题。
拿爬虫举例,如果你对计算机网络,HTTP协议,HTML,文本编码,JSON一无所知,你能做好这部分的工作么?而你在起步阶段的基础知识也同样重要,如果你连循环递归怎么写都还要查文档,连 BFS 都不知道怎么实现,这就像工匠做石凳每次起锤都要思考锤子怎么使用一样,非常低效。
在这个阶段,不可避免要接触大量类库,阅读大量书籍的。
°1 类库方面
「Awesome Python 项目」:vinta/awesome-python · GitHub
这里列出了你在尝试解决各种实际问题时,Python 社区已有的工具型类库,如下图所示:
你可以按照实际需求,寻找你需要的类库。
至于相关类库如何使用,必须掌握的技能便是阅读文档。由于开源社区大多数文档都是英文写成的,所以,英语不好的同学,需要恶补下。
°2 书籍方面:
这里我只列出一些我觉得比较有一些帮助的书籍,详细的请看豆瓣的书评:
「集体智慧编程」:集体智慧编程 (豆瓣)
「数学之美」:数学之美 (豆瓣)
「统计学习方法」:统计学习方法 (豆瓣)
「Pattern Recognition And Machine Learning」:Pattern Recognition And Machine Learning (豆瓣)
「数据科学实战」:数据科学实战 (豆瓣)
「数据检索导论」:信息检索导论 (豆瓣)
爬虫:
「HTTP 权威指南」:HTTP权威指南 (豆瓣)
Web 网站:
「HTML & CSS 设计与构建网站」:HTML & CSS设计与构建网站 (豆瓣)
...
列到这里已经不需要继续了。
聪明的你一定会发现上面的大部分书籍,并不是讲 Python 的书,而更多的是专业知识。
事实上,这里所谓“跳出 Python,拥抱世界”,其实是发现 Python 和专业知识相结合,能够解决很多实际问题。这个阶段能走到什么程度,更多的取决于自己的专业知识。
¶ 深入阶段
这个阶段的你,对 Python 几乎了如指掌,那么你一定知道 Python 是用 C 语言实现的。
可是 Python 对象的“动态特征”是怎么用相对底层,连自动内存管理都没有的C语言实现的呢?这时候就不能停留在表面了,勇敢的拆开 Python 的黑盒子,深入到语言的内部,去看它的历史,读它的源码,才能真正理解它的设计思路。
这里推荐一本书:
「Python 源码剖析」:Python源码剖析 (豆瓣)
这本书把 Python 源码中最核心的部分,给出了详细的阐释,不过阅读此书需要对 C 语言内存模型和指针有着很好的理解。
另外,Python 本身是一门杂糅多种范式的动态语言,也就是说,相对于 C 的过程式、 Haskell 等的函数式、Java 基于类的面向对象而言,它都不够纯粹。换而言之,编程语言的“道学”,在 Python 中只能有限的体悟。学习某种编程范式时,从那些面向这种范式更加纯粹的语言出发,才能有更深刻的理解,也能了解到 Python 语言的根源。
¶ 最后的话
每个人学编程的道路都是不一样的,其实大都殊途同归,没有迷路的人只有不能坚持的人。虽然听上去有点鸡汤,但是这是事实。
希望想学 Python 想学编程的同学,不要犹豫了,看完这篇文章,Just getting started~
摘要①:微软再发力Python ,VS Code与Anaconda达成合作
微软近日在官方博客宣布,其免费和跨平台代码编辑器 Visual Studio Code 已默认被包含在 Anaconda 发行版中。Python 用户现在可以在安装 Anaconda 的同时轻松安装 Visual Studio Code ,以提供出色的编辑和调试体验,微软还为 Anaconda 用户量身定制了专用功能。
Anaconda 是一个流行的 Python 发行版,主要用于数据科学和信号处理等领域,可为 Windows、Mac 和 Linux 上的用户提供简化的 Python 环境。
此次合作也是微软投资 Python 社区的又一个示例。微软在去年 9 月曾宣布计划将 Python 引入 Azure 机器学习,Visual Studio 和 SQL Server 中。 据微软称,Microsoft Python Extension for Visual Studio Code 是 VS Code marketplace 中下载次数最多的扩展插件,迄今为止已有超过 600 万次的下载。
摘要②:新兴技术岗位薪资涨幅惊人,Python需求增速达174%!
看到Boss直聘发布《2017互联网人才趋势白皮书》,只想说新的一年,希望大家火得像Python一样,根本停不下来。接下来,我们一起解读《2017互联网人才趋势白皮书》!
2017年是互联网行业全面转向技术驱动的一年,技术类人才招聘需求已经占到整体人才需求的25%。在人工智能热潮的驱动之下,AI相关岗位人才需求飙升,然而缺口依然超过百万。
2017年还是热门职位更迭的一年。与人工智能、数据科学等前沿技术相关的职位热度显著提升;移动互联网红利日渐消退,通用开发基础岗位的平均薪酬和需求均进入下行通道。
01 北上广深杭互联网人才需求占比全国63%
从城市分布上看,互联网行业人才需求高度集中,北上广深杭五座城市的互联网人才需求占到了全国的63%。北京身为互联网行业大本营,人才需求稳居首位。
02 技术人才需求占总体需求25.1%
2017年,从巨头到创业公司,为寻找新的增长动力,纷纷转向技术驱动。数据显示,2017年,技术人才招聘需求占到总体人才需求的25.1%,较2016年提高2.7个百分点,占比连续2年提升。产品、设计人才需求也有小幅上升,运营、市场、销售类职位需求则分别呈现小幅下降。
03 人工智能人才需求翻倍
从具体职位来看,人工智能相关的职位需求增幅排在最前。由于大批公司涉足AI领域,2017年AI人才需求已达到2016年的两倍,2015年的5.3倍,人才需求直线上升,大部分岗位三年复合增长率超过200%。AI应用层职位需求增速尤为显著,增速最高的三个岗位依次是算法工程师、语音识别和图像处理。
大数据类职位需求增幅仅次于AI岗位。眼下,几乎所有互联网企业均把数据人才列为团队标配。许多公司在数据层面增加投入,大量招募具有算法和建模能力的人才,力求通过数据沉淀与挖掘更好地推进产品的迭代。数据架构师、数据分析师成为企业争抢对象,过去一年招聘需求提高150%以上。
04 薪资最高职位过半为AI类岗位
2017年薪资最高的十个职位中,过半为AI类岗位。语音识别、NLP、机器学习等职位平均薪资超过2.5万元,远高于一般互联网职位。在部分大公司,60万年薪加期权股票只是争抢高级AI人才的低配标准。同时我们注意到,50%的人工智能岗位的职位描述上会明确提到为员工提供股票期权,这一比例显著高于其他职位。
同时,我们从数据中可以看到,新兴技术岗位薪资涨幅惊人。
图像算法、推荐算法、深度学习岗位薪资增幅均在15%以上,大数据类岗位仅次于人工智能。
新兴技术岗位薪资涨幅惊人
相比之下,通用类岗位程序员由于从业人数不断上升,人才稀缺程度大幅缓解,招聘薪酬不升反降,过去几年格外吃香的PHP、.Net、iOS等职位招聘薪资在下半年出现了2-3%的回调。点击查看►就业|数据分析师、大数据开发、Hadoop开发工程师、数据挖掘、算法工程师的工资薪水到底怎么样?
05 社交领域Java技术受欢迎
社交网络行业招聘平均薪资一直处于高位。2017年社交网络平均招聘薪资高于互联网行业整体招聘薪资16.7个百分点,薪资优势显著。
同时数据显示,后端开发或移动开发方面的技术人才,在社交网络行业比较受欢迎。
06 Python技能需求增速达到174%
在人才需求升级的同时,互联网公司对人才技能的要求也在逐渐提高。以数据分析师为例,2015年,超过40%的职位技能要求中只提到了SQL或HIVE,而到2017年,这一比例已降至30%以下,半数岗位要求候 选人还须掌握通用编程技能(Python、Java),数据挖掘技能(R语言,SAS)以及数据可视化等技能,其他岗位技能要求也普遍较过去更为严格。
从分布上看,新兴技能占比提高显著。Python由于语法简洁,功能强大,且在人工智能、大数据方面展现出效率优势,越来越受到欢迎。数据显示,2017年在雇主发布的职位说明中,Python技能需求增速达到174%,居于首位,Spark、Hadoop等大数据技能需求增幅也十分靠前。【点击查看Python数据分析与数据爬取实战】
07 信息安全领域需求占比最高的技术职位
2017年,信息安全领域尤其值得关注。尽管因企业数量不占优势,人才需求占比不高,但需求增幅超过60%,其中技术人才需求占比多达46.5%,高出互联网均值超过20个百分点。该行业的高需求技术职位偏重于后端、运维、测试类人才。
从人才需求大数据中,我们还发现,信息安全领域的技术人才需求中,机器学习、自然语言处理、深度学习等AI相关人才占比已达1.3%,体量虽不大,但却向我们传递了一个信息,信息安全行业正在向更高端、更高效、更智能的方向发展。
信息安全行业中,高需求职位的薪资涨幅依然强势。Golang、运维开发工程师薪资涨幅在15%以上。即便是招聘薪资普降的运维工程师,在信息安全行业中招聘薪资增幅也达到7.9%,足见行业间的侧重差异。
08 复合型人才竞争力碾压优势愈发明显
2017年,互联网行业求职人才中,有26%的人掌握至少3种技能,较2015年增加3.1个百分点,更多的非技术人才开始掌握技术型技能。增长最快的五大技能分别是SQL、Python、Java、Tableau和Hive。
从竞争力上看,多重技能人才也比以往更加吃香。数据显示,2017年掌握3项以上技能的人才,对企业的吸引力较仅拥有一项能力的人高出30%以上,而在两年前,这一数字还保持在10%左右,特别是在创业公司,这一趋势更加明显。以技术职位为例,虽然不少企业在职位要求中只写了一项编程能力,但过半数公司在寻找人才时偏爱掌握多门编程语言的求职者,多重技能人才对一般求职者的优势碾压愈发明显。
09 2018年发展预测
在谈到2018年发展趋势时,其中Face++人力总监尹利,认为2018年的发展趋势主要有以下几个观察角度:
● 人才的稀缺性会让市场价值在未来两年存在一定不合理性;
● 名校情结会更加严重,人才市场上的两极分化会越来越严重;
● 这个行业更喜欢真正专注的人,而没有过去移动互联网人才的跳跃的基因;
● 海外人才回流,越来越多的北美前30名高校的毕业生,因为美国政治因素,中国市场环境因素将回流 中国北上广深等大城市。
2018年,以下三类职位很可能变得更加热门:
● 跟底层算法技术相关的职位;
● 能带来AI从技术转向产品化的职位;
● 新零售相关岗位。
So,看了这些,你还在犹豫到底学不学Python吗?