厉害的不是Python,是库

从我开始写关于开发的文章以来,我一直觉得,Python被炒得太火了。

Python在2017年初开始逐渐受到大家的关注。在B站搜索“Python”,有50页的视频结果(每页20条,2018年8月18日 19点09分)。

B站搜索Python的结果,第一页的稿件总体上还算可以

这里面有一些是实打实的干货,但也有相当一部分是被大家所诟病的营销号的视频。通常来说,后者基本上都是录播直播课的部分内容,借以推广QQ群、推荐课程来牟利。这样的视频自然会取一些标题党性质的标题,我本来是不屑于看的,但是为了写这篇文章,我们暂且来看看都是什么吧:

Python程序员本身就是Vip,充Vip是不存在的!无限获取Vip特权!
Python爬虫爬取知乎数据,爬虫太强大了!还有什么不能爬?!
WiFi破解这个技术很普通!Python几行代码就可以做到!进来就学会!
爬小电影网站,晚上做个好梦,python大佬说的!
Python爬虫开发思维,学会90%的网站直接无视
Python破解验证码教程,学会即可爬取大部分网站!
七夕就要到了,教你利用Python制作抖音超火表白神器
表弟使用Python的两种方法来爬取《我不是药神》高清电影和影评,VIP都不需要了!
Python终极暴力破解
你知道 Python for循环的真正强大之处吗?只用它就能爬取整个网站
Python攻克12306最后一道防线,实现12306自动抢票并下单!
Python爬取今日头条街拍美女!爬虫的强大你才只看到一个角!

在今日头条上,由于我自身的关系,平台会经常推荐Python相关的文章。这种营销号标题党的文章也是屡见不鲜。由于今日头条的搜索功能无法搜索出来全部内容,通过无数次的刷新,我找到了一些这样的营销号标题党内容:

学会Python之后,感觉PS真的不行!Python修图拉开PS几条街!
用Python做了个能识别图片清晰度的程序,马赛克?看不到了!
如何用Python来识别最简单的验证码?然后在识别12306的验证码?
国内顶尖白帽子用Python打造渗透工具集,当时花上万购买都被拒!
完美Python入门基础知识点总结,看完你的Python就完全入门了!

(顺便说一下,前两条的内容几乎完全一致)

当然,由于系统推荐的关系,我平常看到的类似内容更多。对于这种内容,我莫名想到了这一幕:

《小林家的龙女仆》第4话 09:58

看上面的内容,基本上都和爬虫、破解什么的有关。

这让我想起了很多人对于计算机专业的一个误解——“你会盗QQ吗?你会破解程序吗?你会……”有些人遇到我也是说关于爬虫的事情,仿佛我写了一个爬虫就能在一周之内写了一个应用于完全不同的平台的爬虫一样。

——当然,这都是题外话了。我在这篇文章里面想说的是,这些东西可能会让小白们以为Python本身有这些功能,进而把Python和爬虫等划上等号。然而,实际上,厉害的不是Python,是库。

Python能做的,其它语言也可以

计算机科学中有一个概念——图灵完备。

在可计算性理论里,如果一系列操作数据的规则(如指令集、编程语言、细胞自动机)可以用来模拟单带图灵机,那么它是图灵完备的。这个词源于引入图灵机概念的数学家艾伦·图灵。

虽然图灵机会受到储存能力的物理限制,图灵完全性通常指“具有无限存储能力的通用物理机器或编程语言”。

简单来说,一切可计算的问题都能计算,这样的虚拟机或者编程语言就叫图灵完备的。计算机所解决的问题都是可以计算的问题。因此,如果一个编程语言是图灵完备的,那么它能够解决计算机能够解决的所有问题。

现代的绝大多数高级编程语言都是图灵完备的,包括C、Pascal、Java、C++、C#、Python、R、Lisp、Haskell。因此,Python能做的,其它语言也可以。只不过,它们的区别在于性能、学习难易程度和支持等,但编程语言能做什么与编程语言本身没有什么关系。

就说大家经常遇到的爬虫吧。爬虫一般来说就是按照一定的规则取发送HTTP请求,传回数据,对数据进行解析,提取有效数据、存档,如此往复循环。这样一来,大家很容易发现,这就是语言无关的了。

实际上,除了Python外,我用过JS配合早已不更新的PhantomJS写过爬虫,还算可以。用Java的话应该也比较容易吧。C语言可能有些麻烦,但是也是可行的。如果你愿意,你甚至能用机器语言来写爬虫(估计没有人会这么做吧)。

就算不知道图灵完备,高中学过算法的人应该知道,所有算法无非是顺序结构、条件结构和循环结构的组合。

所以,我十分不建议一个精通其他语言的人仅仅为了一项功能就去学其它语言,这样很容易浪费时间又学不好。

而且,不要听到Python就想到爬虫,不要听到爬虫就想到Python。

厉害的不是Python,是库

前面也说了,所有算法无非是顺序结构、条件结构和循环结构的组合。程序就是算法再加上数据结构了。但是,如果只有这些,写代码会非常麻烦。

我们举一个简单的例子:计算三个数(abc,已给定)的最大值(使用Python语言,使用print输出结果)。如果只使用基本的流程结构,代码如下:

if a > b:
    max = a
else:
    max = b
if c > max:
    max = c
print(max)

实际上,Python内置有函数max(),可以直接返回最大值:

print(max(a, b, c))

max()函数封装了球最大值的算法,并且支持更多的功能,使用起来也很方便,一下子节省6行。在C语言里面,默认是没有这样的函数的,要导入Math库才行。同样的情况还有很多。

我们经常要处理JSON数据,但是Python没有内置这样的功能。幸好Python内置有一个json库,导入它就能够使用其中的功能。

import json
a = '''{
    "l1": {
        "l1_1": [
            "l1_1_1",
            "l1_1_2"
        ],
        "l1_2": {
            "l1_2_1": 121
        }
    },
    "l2": {
        "l2_1": null,
        "l2_2": true,
        "l2_3": {}
    }
}'''
b = json.loads(a)
print(b['l2'])
# 输出结果:{'l2_1': None, 'l2_2': True, 'l2_3': {}}

感兴趣的可以自己翻一下实现这个功能的代码,可以说是很复杂了。如果让你自己从头写,估计是写不好的。

Python内置的urllib库用来操作HTTP请求,但是直接使用有一些麻烦,这时可以使用第三方库requests进行HTTP请求。requests实际上就是对urllib等内置库的封装。这是目前大多数爬虫都会用到的库。

Requests

(我特意翻了一下英文文档,确实是按原文翻译的)

比较常用的还有Pillow、selenium、pymysql等等的库,这些库封装了各种功能,使用它们可以以非常简单的方式实现复杂的功能。程序员对这种东西有一种称呼——轮子。

既然有人造了轮子,那么对于普通人来说,我们只需要知道怎么用它们就行了,至于其中的原理,不知道也暂时没太大关系。于是,很多声称使用Python用仅仅几行代码实现某个功能的视频或文章,实际上都是使用Python的某个第三方库。除了爬虫所需要的库之外,我觉得另一个在这些文章被提起得比较多的库就是itchat,和微信相关的库,可以开发微信机器人(微商居家旅行必备)。至于TensorFlow什么的,本来对计算机科学的要求就很高,也就会曲高和寡。

pip让Python的第三方库的安装变得异常简单,这样就算是小白也能照着代码快速实现自己想要的功能。于是,很多人会觉得“Python好厉害啊”,更别说那些没接触编程的人了。

实际上,厉害的不是Python,是库。正是这些由世界各地人士开发支持的库,让我们能够轻松实现复杂的功能。

《后街女孩》第5话 14:32

除了Python,JS也是有着大量的第三方库,也有npm这样的包管理器,也和Python一样有着来自世界各地的社区支持。

本人才疏学浅,如有纰漏,万望见谅。

参考资料

除视频截图外,还有:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容