第一章
PYthon 简介
Python的创始人为吉多.范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多.范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python作为程序的名字,是因为他是BBC电视剧——蒙提.派森的飞行马戏团(Monty Python‘s Flying Circus)的爱好者。ABC是由吉多参加设计的一种教学语言。就吉多本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,吉多认为是非开放造成的。吉多决心在Python中避免这一错误,并获取了非常好的效果,完美结合了C和其他一些语言。
Python在吉多手中诞生了,第一个实现是在Mac机上。可以说,Python是从ABC发展起来,主要受到了Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响。并且结合了Unix shell和C的习惯。目前吉多仍然是Python的主要开发者,决定整个Python语言的发展方向。Python社区经常称呼他是仁慈的独裁者。Python 2.0于2000年10月16日发布,增加了实现完整的垃圾回收,并且支持Unicode。同时,整个开发过程更加透明,社区对开发进度的影响逐渐扩大。Python 3.0于2008年12月3日发布,此版不完全兼容之前的Python源代码。不过,很多新特性后来也被移植到旧的Python 2.6/2.7版本。Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多重继承,有益于增强源代码的复用性。Pytho持重载运算符,因此Python也支持泛型设计。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。有两个标准库(functools, itertools)提供了与Haskell和Standard ML中类似的函数式程序设计工具。虽然Python可能被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发项目例如Zope、Mnet及BitTorrent,Google也广泛地使用它。Python的支持者较喜欢称它为一种高级动态编程语言,原因是“脚本语言”泛指仅作简单程序设计任务的语言,如shell script、VBScript等只能处理简单任务的编程语言,并不能与Python相提并论。
Python本身被设计为可扩充的。并非所有的特性和功能都集成到语言核心。Python提供了丰富的API和工具,以便程序员能够轻松地使用C、C++、Cython来编写扩充模块。Python编译器本身也可以被集成到其它需要脚本语言的程序内。因此,有很多人把Python作为一种“胶水语言”(glue language)使用。使用Python将其他语言编写的程序进行集成和封装。在Google内部的很多项目,例如Google App Engine使用C++编写性能要求极高的部分,然后用Python或Java/Go调用相应的模块。《Python技术手册》的作者马特利(Alex Martelli)说:“这很难讲,不过,2004年,Python已在Google内部使用,Google召募许多Python高手,但在这之前就已决定使用Python。他们的目的是尽量使用Python,在不得已时改用C++;在操控硬件的场合使用C++,在快速开发时候使用Python。”
PYthon应用范围
Web应用程序:web应用程序、服务器后台应用程序。Python语言可以开发非常优秀的Web框架,例如:Django\Tornado\Flask\Pyramid等。网络服务器框架有著名的Twisted,异步通信eventlet。
GUI开发:Python提供了非常棒的图形界面化开发库文件,比较知名的两个库文件包括wxPython或者PyQt等GUI包来开发跨平台的桌面软件。
科学运算:随着 NumPy、SciPy、matplotlib、ETS 等众多程序库的开发,Python 越来越适合于做科学计算。与科学计算领域最流行的商业软件 MATLAB 相比,Python 是一门真正的通用程序设计语言,比 MATLAB 所采用的脚本语言的应用范围更广泛,有更多程序库的支持,适用于 Windows 和 Linux 等多种平台,完全免费并且开放源码。虽然 MATLAB 中的某些高级功能目前还无法替代,但是对于基础性、前瞻性的科研工作和应用系统的开发,完全可以用 Python 来完成。
系统管理工具:可以使用python 开发一些日常运维管理工具,例如:流程化自动管理工具、监控报表。使用python开发比较成熟的运维管理工具有SaltStack\Ansible,虚拟化管理工具OpenStack,备份工具Bacula。python是运维管理人员日常工作中助手的不二之选。