1.1 Python语言简介
Python语言是1989年由荷兰人吉多范罗·苏姆(Guido van Rossum)开发的一种编程语言,被广泛应用于处理系统管理任务和科学计算,是最受欢迎的程序设计语言之一。2011年1月,Python被TIOBE编程语言排行榜评为2010年度语言。自从2004年以后,Python的使用率呈线性增长,在TIOBE公布的2017年编程语言指数排行榜中,排名处于第五位(前4位是Java、C、C++、C#)。2017年7月,根据IEEE Spectrum发布的研究报告显示,Python已经成为世界上最受欢迎的语言之一。
Python支持命令式编程、函数式编程,完全支持面向对象程序设计,语法简洁清晰,并且拥有大量的几乎支持所有领域应用开发的成熟扩展库。
众多开源的科学计算软件包都提供了Python的调用接口,例如计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK。Python专用的科学计算扩展库更多,例如NumPy、SciPy和Matplotlib,它们分别为Python提供了快速数据处理、数值运算及绘图功能。因此,Python语言及其众多的扩展库所构成的开发环境十分适合工程技术、科研人员处理实验数据、制作图表,甚至开发科学计算应用程序。
Python提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容。用Python开发程序,许多功能不必从零编写,直接使用现成的即可。除了内置的库外,Python还有大量的第三方库,可直接使用其中的文件。当然,如果对开发的程序进行很好的封装,也可以作为第三方库供别人使用。Python就像胶水一样,可以把多种用不同语言编写的程序融合到一起实现无缝拼接,更好地发挥不同语言和工具的优势,满足不同应用领域的需求。
Python同时也支持伪编译,可将Python源程序转换为字节码来优化程序和提高运行速度,也可以在没有安装Python解释器和相关依赖包的平台上运行Python程序。
Python语言除了其强大的功能及广泛的应用范围,也存在以下缺点:
(1)运行速度慢。同C程序相比运行速度非常慢,因为Python是解释型语言,代码在执行时会一行一行地翻译成CPU能理解的机器码,翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。
(2)代码不能加密。如果要发布Python程序,实际上就是发布源代码,这一点跟C语言不同。C语言不用发布源代码,只需要把编译后的机器码(也就是在Windows上常见的×××.exe文件)发布出去。要从机器码反推出C语言源代码是不可能的,所以,凡是编译型的语言,都不存在泄露源代码的问题;而解释型的语言,则必须把源代码发布出去。
(3)用缩进来区分语句关系的方式给很多初学者带来困惑。即使很有经验的Python程序员也可能出现理解错误的情况。最常见的情况是Tab和空格的混用会导致错误。
Python语言的应用领域主要有:
(1)Web开发。Python语言支持网站开发,比较流行的开发框架有web2py、Django等。许多大型网站就是用Python开发的,例如YouTube、Instagram等。很多大公司,如Google、Yahoo等,甚至NASA(美国航空航天局)都大量地使用Python。
(2)网络编程。Python语言提供了socket模块,对Socket接口进行了两次封装,支持Socket接口的访问;还提供了urllib、httplib、scrapy等大量模块,用于对网页内容进行读取和处理,并结合多线程编程以及其他有关模块可以快速开发网页爬虫之类的应用程序;可以使用Python语言编写CGI程序,也可以把Python程序嵌入到网页中运行。
(3)科学计算与数据可视化。Python中用于科学计算与数据可视化的模块很多,如NumPy、SciPy、Matplotlib、Traits、TVTK、Mayavi、VPython、OpenCV等,涉及的应用领域包括数值计算、符号计算、二维图表、三维数据可视化、三维动画演示、图像处理以及界面设计等。
(4)数据库应用。Python数据库模块有很多,例如,可以通过内置的sqlite3模块访问SQLite数据库;使用pywin32模块访问Access数据库;使用pymysql模块访问MySQL数据库;使用pywin32和pymssql模块访问SQL Sever数据库。
(5)多媒体开发。PyMedia模块可以对WAV、MP3、AVI等多媒体格式文件进行编码、解码和播放;PyOpenGL模块封装了OpenGL应用程序编程接口,通过该模块可在Python程序中集成二维或三维图形;PIL(Python Imaging Library,Python图形库)为Python提供了强大的图像处理功能,并提供广泛的图像文件格式支持。
(6)电子游戏应用。Pygame就是用来开发电子游戏软件的Python模块。使用Pygame模块,可以在Python程序中创建功能丰富的游戏和多媒体程序。
Python有大量的第三方库,可以说需要什么应用就能找到什么Python库。