题图来自于NextDay
最近两年,似乎有这样一个现象:
Python 越来越火
从 TIOBE 2019年3月这张图上来看,Python 的受欢迎程度已位居第三位,仅次于 Java 和 C。
其实 Python 在多年之前已经被广泛使用了,但是在编程语言排行榜上却一直不温不火,在10位左右徘徊着,从 TIOBE 的趋势图上看出,2017年开始呈急剧上升趋势,瞬间有种人人开始学 Python 即视感,这种感觉像极了2015年牛市时菜市场都在讨论股市行情时的情形。
身边不是计算机专业的(比如,某个学金融的妹纸,也不知道现在学得怎么样了),也开始说起 Python,就连少儿编程的课程里 Python 也成了香饽饽。这是什么原因呢?其实并不是这个语言有了突飞猛进的升级,很大一部分原因是得益于大数据和机器学习的发展,可是 Java 和 C 并不是不能做这两块的业务,为什么 Python 就成了红人呢?简单粗暴来说,是因为它有巨多库,吭哧吭哧用 C 写了一堆堆的,到 Python 这儿,估计引个库,几行代码就搞定了,能不招人喜欢吗。
Python 除了做算法及数据处理分析之外,因为其简单、易封装等等特点,也是运维的好帮手,脚本写起来很是方便。但是与我们第一、第二的 Java 和 C 相比,性能是个过不去的坎儿,也不要去想什么并发或者线程处理了,我想当初这门语言被设计出来,也是出于「简单、易用」的考虑,语法也是友好到感人,跟写自然语言差不多了,一句话结束没有分号,没有分号,Java 程序员们一定要忍住😂。
我最早接触 Python 也是十几年前了,大概2004的样子。那时候是因为有个要批量下载邮件附件的诉求,印象中也就十几行不到的代码吧,脚本跑一跑很方便。正因为太方便了,陆陆续续地写过一些脚本,但一直没深入去用起来。
2017年兴起的这股 Python 大风,让我想起了这些“往事”,心想着要不也来写写算法什么的,毕竟机器学习将来也会成为必备知识。于是找了一些机器学习的书,以及在 Coursera 上订阅了 Andrew 的那套课程来学,里面有一些用 NumPy (Python 的一个开源的数值计算扩展库)做分析的练习,可是机器学习的前提是数学得好😂,在还没开始用 NumPy 之前,得把高数、线性代数这些补起来,当然不补这些,程序照样可以跑起来,但是「知其然而不知其所以然」,越到后面越吃力。
嗯……于是,Python 也没真正用起来。
我曾经多次提到,一个人真正精通的专业通常都只有1-2个,不超过3个,而且这三个基本上跟工作有着密切的关系。因为专业的精通始终离不开实践,只有当我们能扎扎实实用起来,才会真正地投入身心去学习。当然,我不是说业余时间学习的技能就一定不能达到专业,但需要付出更高的代价。前几天翻到韩寒的那篇旧文很有意思,就是讲的职业选手和民间选手的差异,名叫「我也曾对这种力量一无所知」,有兴趣的可以搜来看看。
是什么让我在今天又想起来 Python 这件事了呢,也是源自于一个小小的需求。最近有个考试证书应该差不多要发了,但需要自己每天去某个网站的「领证通知」栏目下查看,虽然已设成了主页,但连续查了三天之后,即便是这样一个只需要打开浏览器的动作,也让我觉得太机械化了,于是就动手写了脚本,很简单的功能,每天定时去抓取这个网站「领证通知」下最新的那条通知,取出标题、时间、具体通知内容,然后发邮件给我。这不是还要打开邮箱收邮件吗!跟打开浏览器有什么区别?!区别就是作为 IT 从业人员,自动化是必备的生存技能啊😄。
好吧,其实我只是想借这个小小的脚本了解一下 Python 爬虫的这些库。爬虫可以简单理解成一种抓取网页内容的脚本或者程序。之前也了解过一些 Python 爬虫框架,比如 Scrapy,也有一些基于 Java 的,大多适合比较庞大的作业,所以框架本身也相对比较复杂,也就搁置到现在。今天这个需求虽小,但很实用,而且花了一点时间就上手了,之后的工作中也会用这块知识来做一些东西。
今天这件事给我的启发是,当我们学习一个新东西的时候,不要想着一上来就想做个很庞大很完美很有成就感的事情,而是从一个很小的点切入,快速启动,毕竟「做了」与「准备做」是两个世界,一旦做了才有继续做下去的可能,才有继续修正的可能,追求完美有时候也只是“拖延”的一种借口罢了。
最后用Python 之父的那句名言来结尾吧:
人生苦短,我用 Python
发送给作者