本节书摘来自华章出版社《Python数据科学实践指南》一书中的第0章,第0.3节,纪路 著,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
0.3 为什么是Python
通过书名,各位读者就应该知道这是一本讲解Python编程的书了。数据科学只是个引子,我希望能通过相关的例子和练习激发出读者的兴趣,帮助读者除掉编程这条拦路虎。在很多非计算机相关专业的人的概念里,编程是要归为玄学分类的,通过一堆意义不明的符号就能驱动计算机完成各种各样的任务,是不是有点像魔法师口中所念的咒语。但事实上,计算机只能做两件事情,执行计算并记录结果,只不过它的这两项能力远远超过人类大脑的能力(读者可能看过一些文章,其中有些研究声称尝试估算过人类大脑的计算能力,发现人脑的计算能力仍然比现今最先进的计算机还要快很多倍。但是人类大脑中有些模块,比如视觉、语言,是人类经过亿万年的演化,大自然进行极致优化所产生的结果。这里对于计算和存储能力的比较仅是指数学计算和文字存储方面)。以我正在使用的笔记本来说,其拥有主频为2.5GHz的双核处理器,总计约等于50亿次/秒的计算速度。而512GB的硬盘则可以存储10万本书(按每本书5MB计算,实际上5MB大小的书应该算是鸿篇巨著了。假如按UTF-8编码,每个中文占3~4个字节(byte),而5MB约有500万个字节,这至少是一本百万字的书)。如果想要使用计算机这种能力强大的工具,就需要掌握一门编程语言,用来和计算机进行沟通。虽然我也想为各位读者科普一下众多的编程语言,不过这毕竟是一本教授Python编程的书,所以这里只通过以下几个方面来阐述一下用Python作为数据科学工具的理由。
(1)简单易上手
Python被誉为可执行的“伪代码”,其语法风格接近人类的语言,即使是第一次看代码的人也能很容易理解程序所要实现的功能,读者可以试着阅读下面这段代码:
for i in range(0, 10):
print(i)
上面的代码中range代表一段区间,0代表下界,10代表上界,通常Python程序的上下界是左闭右开的一个区间。for的含义表示“这其中的每一个数”,print就不言自明了,代表打印结果到屏幕上。
除了优雅的语法之外,Python还属于解释性语言,我们可以不经过编译、链接等步骤直接获得程序执行的结果。而且Python还拥有交互式解释器,可以让我们随时随地测试我们的代码,如图0-1所示。
(2)资源丰富、应用广泛
已经有很多书讲解了Python相关的技巧,比如《编程导论》是麻省理工学院(MIT)计算机科学导论的课程;《Python编程实战》是一本Python编程技巧进阶的好书,介绍了在Python中如何实践设计模式;《机器学习实战》主要讲解了机器学习的常见算法,其中使用Python编写了全部的代码;《Python高手之路》对如何使用Python构建大型系统提出了很多有益的见解。而且使用Python的知名项目也很多,比如OpenStack开源云计算平台就是由Python编写的,还有世界上最大的视频网站YouTube也是使用Python开发的,等等。当然Python在大数据应用上也有其独特的优势,科学计算库NumPy和SciPy、绘图模块Pylab、统计库Pandas、机器学习库Scikit-learn都是为Python所设计的,现在流行的Hadoop和Spark也都提供了Python接口。可以说在“大数据”“数据科学”领域,如果某一个产品不支持Python,那么其前景将会是难以想象的。
(3)跨平台、免费
Python官方提供了多平台的解释器,包括Windows、Mac OS X、Linux甚至更多的其他平台,你所写的Python代码,可以在不经修改的情况下移植,比如在Windows上开发,在Linux服务器上运行,不会有任何问题。而且Python是免费且开源的,不仅标准库可以随意阅读其源码,连官方解释器的C语言实现也可以获得其源码。Python社区是鼓励分享的,读者不仅可以从中学到很多编程的技巧,甚至还可以做出一些贡献。