Python简介
作为主流的开源系统之一,Python拥有很大且活跃的开发社区,有不凡的速度进行版本更新和开发改进。
一、Python技术上的优点
1.面向对象
从根本上讲,Python是一种面向对象的语言。它的类模块支持多态、操作符重载和多重继承等高级概念。Python特有的简洁语法和类型,比其他OOP语言更容易学习。
2.免费
Python的使用和分发是完全免费的,而“免费”并不代表“无支持”。相反,Python的在线社区对用户需求的响应和商业软件一样快。
3.可移植
Python的标准实现是由可移植的ANSI C编写的,可以在所有主流平台上编译和运行。
-
- Linux和Unix系统
- 微软Windows和DOS
- Mac OS
- BeOS、OS/2、VMS和QNX
- 实时操作系统如VxWorks
- Cray超级计算机和IBM大型机
- 运行Palm OS、PocketPC和Linux的PDA
- 运行Windows Mobile和Symbian OS的移动电话
- 游戏终端和iPod
4.功能强大
从特性的观点看,Python是一个混合体。它丰富的工具集使它介于传统的脚本语言(如:Tcl、Scheme和Perl)和系统语言(如:C、C++和Java)之间。
-
- 动态类型:Python在运行过程中随时跟踪对象的种类,不需要代码中复杂的类型和大小的声明。没有类型和变量声明,代码不受数据类型的约束,它往往能自动地应用一种广义上的对象。
- 自动内存管理:自动进行对象分配,当对象不再使用时将自动撤销对象(“垃圾回收机制”),当需要时自动扩展或压缩。Python能够代替你进行底层的内存管理。
- 大型程序支持:Python包含了模块、类和异常等工具,这些工具允许你把系统组织为组件,使用OOP重用并定制代码,并以一种优雅的方式处理事件和错误。
- 内置对象类型:提供了常用的数据结构作为语言的基本组成部分,如:列表(list)、字典(dictionary)、字符串(string)。它灵活易于使用,如:内置对象可以根据需求扩展或收缩,可以任意地组织复杂的信息等。
- 内置工具:为了对以上对象类型的进行处理,Python自带了许多强大的标准操作,包括合并(concatenation)、分片(slice)、排序(sort)和映射(mapping)等。
- 库工具:为了完成更多特定的任务,Python预置了许多预编码的库工具,从正则表达式匹配到网络都支持。
- 第三方工具:由于Python是开放源代码,它鼓励开发者提供Python内置工具之外的预编码工具。从网络上,可以找到COM、图像处理、CORBA ORB、XML、数据库等很多免费的支持工具。
除这一系列外,Python保持了相当简洁的语法和设计,综合这一切得到的就是一个具有脚本语言所有可用性的强大编程工具。
5.可混合
Python程序可以以多种方式轻易地与其他语言编写的组件“粘接”在一起。
6.简单易用
运行Python程序,只需简单地键入Python程序并运行就可以。可立即执行程序,形成了一种交互编程体验和不同情况下快速调整的能力,往往在修改代码后能立即看到程序改变后的效果。
7.简单易学
相对其他编程语言,Python语言的核心是非常简单易学。
二、Python用途
Python不仅仅是一个设计优秀的编程语言,它能够完成现实中的各种任务。作为编制其他组件、实现独立程序的工具、它通常应用于各种领域。实际上,作为一种通用语言,Python的应用角色几乎是无限的,你可以在任何场合应用Python,从网站和游戏开发到机器人和航天飞机控制。
1.系统编程
Python对操作系统服务的内置接口,使其成为编写可移植的维护操作系统的管理工具和部件的理想工具。可以搜索文件和目录树,可以运行其他程序,用进程或线程进行并行处理等。Python的标准库绑定了POSIX以及其他常规操作系统(OS)工具:环境变量、文件、套接字、管道、进程、多线程、正则表达式模式匹配、命令行参数、标准流接口、Shell命令启动器、文件名扩展等。
2.用户图形接口
Python的简洁以及快速的开发周期十分适合开发GUI程序。内置了TKinter标准面向对象接口Tk GUI API,使Python程序可以生成可移植的本地观感的GUI。
3.Internet脚本
Python提供了标准Internet模块,它使得Python程序能够广泛地在多种网络任务中发挥作用,无论在服务器还是在客户端都是如此。脚本可以通过套接字进行通信;从发给服务器端的CGI脚本的表单中提取信息;通过FTP传输文件;解析、生成和分析XML文件;发送、接受、编写和解析Email;通过URL获取网页;从获取的网页中解析HTML和XML文件;通过XMLRPC、SOAP、Telnet通信等。Python的库使这一切变得相当简单。网络上还可以获得很多使用Python进行Internet编程的第三方工具。此外,涌现了许多正对Python的优秀的Web开发工具包,如:Django、Flask、Tornado、Web.py、TurboGears、web2py、Pylons、Zope和WebWare等。很多工具包含了诸如对象关系映射器、模型/视图/控制器架构、服务器端脚本和模板,以及支持AJAX等功能,从而提供了完整的、企业级的Web开发解决方案。
4.组件集成
可以通过C/C++系统进行扩展,并能够嵌套C/C++系统的特性,使其能够作为一种灵活的黏合语言,可以脚本化处理其他系统和组件的行为。
5.数据库编程
对于传统的数据库需求,Python提供了对所有主流关系数据库系统的接口,如:Sybase、Oracle、Informix、ODBC、MySQL、PostgreSQL、SQLite等。定义了一种通过Python脚本存取SQL数据库的可移植的数据库API,这个API对于各种底层应用的数据库系统都是统一的。
6.快速原型
对于Python程序来说,使用Python或C编写的组件看起来都是一样的,我们一开始利用Python做系统原型,之后将组件移植到C/C++这样的编程语言上,和其他原型工具不同,当原型确定后,Python不需要重写。系统中不需要想C++这样执行效率的部分可保持不变,从而维护和使用变得轻松起来。
7.数值计算和科学计算编程
NumPy数值编程扩展包括很多高级工具,如:矩阵对象、标准数学库接口等。通过将Python与处于速度考虑而使用编译语言写的数值计算的常规代码进行集成,NumPy将Python变成一个慎密严谨并简单易用的数值计算工具。其他一些数值计算工具为Python提供动画、3D可视化、并行处理等功能的支持。
8. 游戏、图像、人工智能、XML、机器人等
Python的应用领域很多,如:
-
- 可以利用pygame系统使用Python对图形和游戏进行编程。
- 使用PySerial扩展在Windows、Linux以及更多系统上进行串口通信。
- 用PIL、PyOpenGL、Blender、Maya和其他的一些工具进行图像处理。
- 用PyRo工具包进行机器人控制编程。
- 用xml库、xmlrpclib模块和其他一些第三方扩展进行XML解析。
- 使用神经网络仿真器和专业的系统shell进行AI编程。
- 使用NLTK包进行自然语言分析。
- 甚至可以使用PySol程序下棋娱乐。
一般来说,这些领域当中许多在很大程度上都是Python组件集成角色的再次例证。对于一种集成的通用型语言,Python的应用极其广泛。
三、Python的商业应用开发
列举一些比较有名的网站或应用。这其中有一些是用python进行开发,有一些在部分业务或功能上使用到了python,还有的是支持python作为扩展脚本语言。数据大部分来自Wikepedia和Quora。
-
- Reddit - 社交分享网站,最早用Lisp开发,在2005年转为python
- Dropbox - 文件分享服务
- 豆瓣网 - 图书、唱片、电影等文化产品的资料数据库网站
- Django - 鼓励快速开发的Web应用框架
- Fabric - 用于管理成百上千台Linux主机的程序库
- EVE - 网络游戏EVE大量使用Python进行开发
- Blender - 以C与Python开发的开源3D绘图软件
- BitTorrent - bt下载软件客户端
- Ubuntu Software Center - Ubuntu 9.10版本后自带的图形化包管理器
- YUM - 用于RPM兼容的Linux系统上的包管理器
- Civilization IV - 游戏《文明4》
- Battlefield 2 - 游戏《战地2》
- Google - 谷歌在很多项目中用python作为网络应用的后端,如Google Groups、Gmail、Google Maps等,Google App Engine支持python作为开发语言
- NASA - 美国宇航局,从1994年起把python作为主要开发语言
- Industrial Light & Magic - 工业光魔,乔治·卢卡斯创立的电影特效公司
- Yahoo! Groups - 雅虎推出的群组交流平台
- YouTube - 视频分享网站,在某些功能上使用到python
- Cinema 4D - 一套整合3D模型、动画与绘图的高级三维绘图软件,以其高速的运算和强大的渲染插件著称
- Autodesk Maya - 3D建模软件,支持python作为脚本语言
- gedit - Linux平台的文本编辑器
- GIMP - Linux平台的图像处理软件
- Minecraft: Pi Edition - 游戏《Minecraft》的树莓派版本
- MySQL Workbench - 可视化数据库管理工具
- Digg - 社交新闻分享网站
- Mozilla - 为支持和领导开源的Mozilla项目而设立的一个非营利组织
- Quora - 社交问答网站
- Path - 私密社交应用
- Pinterest - 图片社交分享网站
- SlideShare - 幻灯片存储、展示、分享的网站
- Yelp - 美国商户点评网站
- Slide - 社交游戏/应用开发公司,被谷歌收购
- Maya这款强大集成化3D建模和动画系统,提供了一个Python脚本编程API。
- Intel、Cisco、Hewlett-Packard、Seagate、Qualcomm和IBM使用Python进行硬件测试。
- Industrial Light&Magic、Pixar等公司制作动画电影。
- 在经济市场预测方面,JPMorgan Chase、UBS、Getco和CItadel使用Python。
- Los Alamos、Fermilab、JPL等使用Python实现科学计算任务。
- iRobot使用Python开发了商业机器人真空吸尘器。
- ESRI在其流行的GIS地图产品中使用Python作为终端用户的定制工具。
- NSA在加密和只能分析中使用Python
- IronPort电子邮件服务器产品中使用了超过100万行的Python代码实现其作业。
- OLPC使用Python建立其用户界面和动作模块。