00 入坑Python,你必须知道的行业内幕

学Python,入坑还是成神?

 我记得那年是2014年,大数据和人工智能技浪潮开始兴起,程序员们走到哪都聊这些技术。Python作为人工智能和大数据的首选计算机语言,打那开始走进了人们的视野。
 做人工智能和大数据的工程师工资都特别高,平均年薪40万(2016年水平),而这群人都有个特点:都在用Python!于是在当时,Python就等于高薪,就等于走上人生巅峰。而且Python的语法在所有计算机语言中是最简单的,这么一个简单又高大上的东西自然让许多不是计算机专业的外行人两眼放光。许多培训机构趁机打出口号:“吃苦小半年,年薪40万“。Python被炒作得家喻户晓。
 许多人交了一两万培训费去学Python,梦想着自己成为有钱人,可是等培训完后,却很难找到工作。8成以上的互联网公司根本不用Python,数量较少的人工智能公司不会要这些新手,嘲笑应聘者会点Python就像搞人工智能?Python=失业?
 大家知道从事人工智能的都是些什么人吗?研究生!我不是在搞学历歧视,我也只是个本科。为什么一定要研究生才能搞人工智能?因为高等数学。我随便翻一页人工智能的书给你看看,你能看懂吗?
00 入坑Python,你必须知道的行业内幕
 人工智能需要较深的高数”内功“,而本科生的高数功底我不敢恭维,从公司老板的角度考虑,如何保证招到的员工的数学功底是扎实的?理工科学生考研是必考数学的,高数分三大块:微积分、线性代数、概率统计。作为公司高管,招985、211院校的计算机专业研究生就能保证团队数学不掉队。而作为招聘条件,公司都开出了天价年薪,其中就有华为200万年薪招人工智能博士生。这些天价年薪,成为了培训机构割大众韭菜的镰刀,真香。”你看那帮搞人工智能的都迎娶白富美了,赶紧报我们培训班学Python吧!“你是不是也被忽悠进去了?醒醒吧老弟。
 40万年薪=Python工程师+A类院校计算机专业硕士以上学历+熟练掌握人工智能开发框架+3年人工智能开发经验。
 如果不搞AI和大数据,是不是就不学Python了呢?
 我的回答:如果不搞AI大数据,又想转行靠Python吃饭,我劝你放弃吧。但如果你本身是程序员、测开、运维师,学习Python能大大提高你的工作效率,让生活变得轻松。程序员平时会用Python写写自动化脚本、处理Excel什么的,运维会用Python开发出自动化配置工具,如yum命令、Ansible等等。总而言之,Python只能作为大众的第二语言,辅助日常工作。第一语言目前还是C、Java、JavaScript,大家还要靠第一语言吃饭。有人会反驳我,我还可以用Python写网络后端、写游戏啊,怎么就不能学Python?你省省吧,游戏都用C++或C#写的,Python游戏太慢。大型网站后端都用Java的Springboot框架写,前端都是用Javascript的Vue.js、Node.js等前端框架。
00 入坑Python,你必须知道的行业内幕

Python在中国

 由于Python是开源(免费、、源代码可见、安全)的,语法简单,上手容易,功能强大,因此得到了国家的大力推广,有的省份的小学课程中都加入了Python。Python已加入到全国计算机水平考试二级认证中,大一学生可以考一个。唯一美中不足的是Python没有职业资格认证,计算机二级考得太简单了,而从业多年的Python程序员不知道考什么证好,确切地说是无证可考,体现不出自己的水平,公司招聘主要看面试者有没有参与过开源代码贡献,写过哪些项目。Python使用率方面,Python稳居前三,和Java、C三分天下。

Python的特点

相比Java和C,Python牺牲了运行速度,换来了开发速度。

  1. 解释型语言:需要预先安装Python解释器才能运行代码。同一份代码可以在任意操作系统上运行,移植性强。
  2. 弱类型动态语言:定义变量时无需提前声明类型,Python解释器会自动跟踪变量的类型。
  3. 内存垃圾自动回收。
  4. 无法多线程,高并发:由于Python解释器中的GIL锁,提高了Python的安全性,几乎阉割了Python的多线程能力。
  5. 运行速度慢:由于解释器动态跟踪类型,大大降低了Python的运算速度。Python速度是C语言速度的1/16,Java速度的1/4,Python速度和Javascript差不多。
  6. 语法简单:人员学习难度低,培训成本低,并且导致开发速度也提高了。
  7. 代码量少,开发速度快:实现同一个功能所使用的代码量是其他语言的1/5~1/2.

Python能做什么

  1. 人工智能,包括机器学习和深度学习。
  2. 数据科学,包括大数据、数据分析、爬虫。
  3. 小型网站后端,常用开发框架是Django和Flask。
  4. 2D小游戏开发,常用框架Pygame。
  5. GUI桌面软件开发,常用框架是Tkinter和PyQt。
  6. GUI自动化测试,常用框架是selenium。
  7. 自动化工具开发。
  8. 辅助脚本,方便日常工作。
    一切大型游戏、流量大的网站、对运算速度要求苛刻的程序,不适合用Python,桌面软件也很少有人用Python来开发。所以Python主要用作AI、数据科学、自动化测试运维三大块领域。

Python的由来

 20世纪80年底,程序员已经被C++复杂的语法和内存泄漏整的疲惫不堪,同时期Unix运维师只需要写一些语法简单的Shell脚本就能完成工作。Python的创始人为Guido van Rossum(龟叔),他非常羡慕运维师的高效率工作,想要自己发明一种想Shell一样语法简单,和C++一样功能强大的语言。龟叔是Monty Python喜剧团的爱好者,1989年圣诞节期间,在阿萨姆特丹,Monty Python暂停演出了,Guido为了打发圣诞节的无趣,着手开发一个新的解释器,这个解释器还吸收了ABC 语言的语法特点,最终于1991年,Python1.0发布。

Python2和Python3

 2008以前,所有Python开发者都是用Python2,Python2使用ASCII字符集,处理文本、网络数据交互都十分的不方便,装饰器、函数传参也有细微的bug。Python社区人都是完美主义者,不允许这样的诟病。为了让Python用起来丝滑,2008年社区的开发人员们决定重新发布Python3。Python3采用UTF-8字符集,更新了一些内置函数,修改了迭代器机制,趋于完美。
 遗憾的是Python2和Python3的代码并不兼容,很多用Python2开发的产品已经被调试的几乎完美,如果转换成Python3,工作量巨大。2008年至2019年,市场上同时存在的Python2和Python3的产品,且Python2的产品数量依然占绝对优势。
 Python社区为了推动全世界使用Python3,于2020年1月1日不再维护Python2,并强制取消了pip安装Python2第三方模块的功能,这逼迫全世界的Python2开发者把自己的代码转换成3,否则继续开发会很恶心。长痛不如短痛,再过几年,市场上将不存在Python2解释器和代码。
 作为新学者,请使用Python3,并且版本在3.5以上,因为安装很多第三方模块都要求Python版本不低于3.5。
 如果你的公司有Python2的代码,请使用py2to3命令将代码转换成3,不过做不到100%转换。