1 Python 简介

Python 简介

Python 是开源的编程语言。

Python 免费、可移植、功能强大、易使用、效率高。

Python 编写用于在各种领域的程序和脚本。

Python 是一种解释型、动态数据类型、编译性、互动性、面向对象的脚本语言和高级程序设计语言。

Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

Python 多用途语言

  • Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于 PHP 和 Perl 语言。
  • Python 是交互式语言: 这意味着,您可以在一个 Python 提示符,直接互动执行写你的程序,很好的测试或调试代码。
  • Python 是面向对象语言: 这意味着 Python 支持面向对象的风格或代码封装在对象的编程技术。
  • Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

Python 主要版本

Python 有两个主要版本: Python 2.x 版本 和 Python 3.x 版本.

Python 发展历史

Python 是由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年,在荷兰国家数学和计算机科学研究所设计出来的。

Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。

像 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License) 协议。

现在 Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展。

Python 特点

免费

Python 的使用和分发是完全免费的,你可以在 Internet 上获得 源代码。

高级语言

从特性的观点来看,Python 使一个混合体。它丰富的工具集使它介于传统的脚本语言 (例如,Tcl、Scheme 和 Perl) 和系统语言 (例如,C、C++ 和 Java) 之间。Python 提供了所有脚本语言的简单和易用性,并且具有在编译语言中才能找到的高级软件工程工具。不像其他脚本语言,这种结合使 Python 在长期大型的开发项目中十分有用。

伴随着每一代编程语言的产生,我们会达到一个新的高度。汇编语言是献给那些挣扎在机器代码中的人的礼物,后来有了 FORTRAN、C 和 Pascal 语言,它们将计算提升到了崭新的高度,并且开创了软件开发行业。伴随着 C 语言诞生了更多的像 C++、Java 这样的现代编译语言。我们没有止步于此,于是有了强大的、可以进行系统调用的解释型脚本语言,例如 Tcl、Perl 和 Python。

  • 动态类型

Python 在运行过程中随时跟踪对象的种类,不需要代码中关于复杂的类型和大小声明。事实上,Python 中没有类型或变量声明这回事。因为 Python 代码不是约束数据的类型,它往往自动地应用了一种广义上的对象。

  • 大型程序支持

为了能够建立更大规模的系统,Python 包含了模块、类和异常等工具。这些工具允许你把系统组织为组件,使用 OOP 重用并定制代码,并以一种优雅的方式处理事件和错误。

  • 内置对象类型

Python 提供了常用的数据结构作为语言的基本组成部分。例如,列表 (list)、字典 (dictionary),字符串 (string)。我们将会看到,它们灵活并易于使用。例如,内置对象可以根据需求扩展或收缩,可以任意地组织复杂的信息等。

这些语言都有高级的数据结构,这样就减少了以前”框架”开发需要的时间。像 Python 中的列表(大小可变的数组)和字典(哈希表)就是内建于语言本身的。在核心语言中提供这些重要的构建单元,可以鼓励人们使用它们,缩短开发时间与代码量,产生出可读性更好的代码。

在 C 语言中,对于混杂数组(Python 中的列表)和哈希表(Python 中的字典)还没有相应的标准库,所以它们经常被重复实现,并被复制到每个新项目中去。这个过程混乱而且容易产生错误。C++ 使用标准模板库改进了这种情况,但是标准模板库是很难与 Python 内建的列表和字典的简洁和易读相提并论的。

  • 内置工具

为了对以上对象类型进行处理,Python 自带了许多强大的标准操作,包括合并 (concatenation)、分片 (slice)、排序 (sort) 和映射 (mapping) 等。

  • 面向对象

从根本上讲,Python 是一种面向对象得语言。它得类模块支持多态、操作符重载和多重继承等高级概念,并且以 Python 特有的简洁的语法和类型,OOP 十分易于使用。事实上,即使你不懂这些术语,仍会发现学习 Python 比学习其他 OOP 语言要容易得多。

除了作为一种强大得代码构建和重用手段以外,Python 得 OOP 特性使它成为面向对象系统语言如 C++ 和 Java 的理想脚本工具。例如,通过适当的粘接代码,Python 程序可以对 C++,Java 和 C# 的类进行子类的定制。

OOP 是 Python 的一个选择而已,这一点非常重要。不必强迫自己立马成为一个面向对象高手,你同样可以继续深入学习。就像 C++ 一样,Python 既支持面向对象编程也支持面向过程编程的模式。如果条件允许的话,其他面向对象的工具即刻生效。这对于预先设计阶段的策略开发模式十分有用。

  • 垃圾回收机制

C 或者 C++ 最大的弊病在于内存管理是由开发者负责的。所以哪怕是对于一个很少访问、修改和管理内存的应用程序,程序员也必须在执行了基本任务之外履行这些职责。这些加在开发者身上的没有必要的负担和责任常常会分散精力。

在 Python 中,由于内存管理是由 Python 解释器负责的,所以开发人员就可以从内存事务中解放出来,全神贯注于最直接的目标,仅仅致力于开发计划中首要的应用程序。这会使错误更少、程序更健壮、开发周期更短。

Python 自动进行对象分配,当对象不再使用时将自动撤销对象 (“垃圾回收”),当需要时自动扩展或收缩。Python 能够替代你进行底层的内存管理。

  • 解释性和(字节)编译性

Python 是一种解释型语言,这意味着开发过程中没有了编译这个环节。一般来说,由于不是以本地机器码运行,纯粹的解释型语言通常比编译型语言运行得慢。然而,类似于 Java, Python 实际上是字节编译的,其结果就是可以生成一种近似机器语言的中间形式。这不仅改善了 Python 的性能,还同时使它保持了解释型语言的优点。

Python 源文件通常用 .py 扩展名。当源文件被解释器加载或者显式地进行字节码编译的时候会被编译成字节码。由于调用解释器的方式不同,源文件会被编译成带有 .pyc 或 .pyo 扩展名的文件。

人们为什么选择 Python

根据 Python 反应,之所以选择 Python 的主要因素有以下几个方面。

  • 软件质量

在很大程序上,Python 更注重可读性一致性软件质量,从而与脚本语言世界中的其他工具区别开来。Python 代码的设计致力于可读性,因此具备了比传统脚本语言更优秀的可重用性可维护性。即使代码并非你亲手所写,Python 的一致性也保证了其代码易于理解。此外,Python 支持软件开发的高级重用机制。例如面向对象程序设计 (OOP,object-oriented programming)。

  • 提高开发者的效率

相对于 C、C++ 和 Java 等编译/静态类型语言,Python 是运行/动态类型语言,Python 的开发者效率提高了数倍。Python 代码的大小往往只有 C++ 和 Java 代码的 1/5~1/3。这意味着可以录入更少的代码、调试更少的代码并在开发完成之后维护更少的代码。并且 Python 程序可以立即运行,无需传统编译/静态语言所必需的编译及链接等步骤,进一步提高了程序员的效率。

  • 程序的可移植性

绝大多数的 Python 程序不做任何改变即可在所有主流计算机平台上运行。例如,在 Linux 和 Windows 之间移植 Python 代码,只需简单地在机器间复制代码即可。此外,Python 提供了多种可选的独立程序,包括用户图形界面、数据库接入、基于 Web 的系统等。甚至包括程序启动和文件夹处理等操作系统接口,Python 尽可能地考虑了程序的可移植性

  • 标准库的支持

Python 内置了众多预编译并可移植的功能模块,这些功能模块叫做标准库 (standard library)。标准库支持一系列应用级的编程任务,涵盖了从字符模式到网络脚本编程的匹配等方面。此外,Python 可通过自行开发的库或众多第三方的应用支持软件进行扩展。Python 的第三方支持工具包括网站开发、数值计算、串口读写、游戏开发等各个方面。例如,NumPy 是一个免费的、如同 Matlab 一样的功能强大的数值计算开发平台。

  • 组件集成

Python 脚本可通过灵活的集成机制轻松地与应用程序的其他部分进行通信。这种集成使 Python 成为产品定制和扩展的工具。如今,Python 代码可以调用 C 和 C++ 的库,可以被 C 和 C++ 的程序调用可以与 Java 组件集成可以与 COM 和 .NET 等框架进行通信,并且可以通过 SOAP、XML-RPC 和 CORBA 等接口与网络进行交互

  • 享受乐趣

Python 的易用性强大内置工具使编程成为一种乐趣而不是琐碎的重复劳动。尽管这是一个难以捉摸的优点,但这将对开发效率的提升有很重要的帮助。

以上的因素中,对于绝大多数 Python 用户而言,前两项 质量效率 也许是 Python 最具吸引力的两个优点。

Python 和其他语言比较起来怎么样

最后,你也许已经知道了,人们往往将 Python 与 诸如 Perl、Tcl 和 Java 这样的语言相比较。

Python 唯一的缺点就是,在目前现有的实现方式下,与 C 和 C++这类编译语言相比,Python 的执行速度还不够快

  • 比 Tcl 强大。Python 支持 “大规模编程”,使其宜于开发大型系统。
  • 有着比 Perl 更简洁的语法和更简单的设计,这使得 Python 更具可读性、更易于维护,有助于减少程序 bug。
  • 比 Java 更简单、更易于使用。Python 是一种脚本语言,Java 从 C++ 这样的系统语言中继承了许多语法和复杂性。
  • 比 C++ 更简单、更易于使用,但通常也不与 C++ 竞争。因为 Python 作为脚本语言,常常扮演多种不同的角色。
  • 比 Visual Basic 更强大也更具备跨平台特性。由于 Python 是开源的,也就意味着它不可能被某一个公司所掌控。
  • 比 PHP 更易懂并且用途更广。Python 有时候用来构建 Web 站点,但是,它也广泛地应用于几乎每个计算机领域,从机器人到电影动画。
  • 比 Ruby 更成熟、语法更具可读性。于 Ruby 和 Java 不同的是,OOP 对于 Python 是可选的:这意味着 Python 不会强制用户或项目选择 OOP 进行开发。
  • 具备 SmallTalk 和 Lisp 等动态类型的特性,但是对开发者及定制系统的终端用户来说更简单,也更接近传统编程语言的语法。

软件质量

**从设计来讲,Python 秉承了一种独特的简洁和高可读性的语法,以及一种高度一致的编程模式。**Python 是一个设计风格始终如一的开发平台,可以保证开发出相当规范的代码。

**从哲学理念上讲,Python 采取了一种所谓极简主义的设计理念。**这意味着尽管实现某一编程任务通常有多种方法,往往只有一种方法是显而易见的,还有一些不是那么明显的方法,以及少量风格一致的解决方法。此外,Python 并不强制约束用户,当交互含糊不清时,明了的解决方法要优于 “魔术” 般的方法。在 Python 的思维方式中,明了胜于晦涩,简洁胜于复杂。

除了以上的设计主旨,Python 还采用模块化设计OOP 在内的一些工具来提升程序的可重用性。由于 Python 致力于精益求精,Python 程序员也自然而然地秉承了这一理念。

Python 有一个隐藏的菜单:描述了一系列 Python 的设计原则。

可以在任意一个 Python 交互解释器中输入 import this 命令。

开发效率

Python 作为开发工具均以付出更少的精力完成更多的任务而脱颖而出。Python 致力于开发速度的最优化:简洁的语法动态类型无需编译内置工具包等特性使程序员能够快速完成项目开发,而使用其他开发语言则需要几倍的时间。其最终结果就是,相对于传统的语言 Python 把开发者效率提高了数倍。

Python 是 “脚本语言” 吗

Python 时一门多种用途的编程语言,时常在扮演脚本语言的角色。

一般来说,Python 可定义为面向对象的脚本语言:这个定义把面向对象的支持和全面的面向脚本语言的角色融合在一起。

事实上,人们往往以 “脚本” 而不是 “程序” 描述 Python 的代码文件。

由于 “脚本语言” 从不同视角来观察时有着众多不同的意义,人们往往给 Python 冠以以下三个不同的角色,其中有些角色相对于其余的角色更重要。

  • Shell 工具

Shell 脚本语言,往往从命令行运行,诸如实现文本文件的处理以及调用其他程序等任务。Python 语言当然能够以这样的角色工作,但这仅仅是 Python 常规应用范围的很小的一部分。但是它不只是一种很好的 Shell 脚本语言。

  • 控制语言

Python 作为脚本语言可以控制或重定向其他应用程序组件的 “粘接” 层。Python 经常部署于大型应用的场合,例如,应用程序可以调用 Python 编写的相关组件,也可以是 应用程序调用 Python 编写的 “粘接” 层,而 “粘接” 层 调用相关组件,因为组件在底层和机器进行交互,你不必重新编译整个系统代码。

  • 使用快捷

Python 可以快速开发各种编程任务,因为 Python 与 C++ 等类似比的编程语言相比,大大提高了程序开发速度。

可升级

大家常常将 Python 与批处理或 Unix 系统下的 shell 相提并论。简单的 shell 脚本可以用来处理简单的任务,就算它们可以在长度上(无限度的)增长,但是功能总会有所穷尽。shell 脚本的代码重用度很低,因此,你只能止步于小项目。实际上,即使一些小项目也可能导致脚本又臭又长。Python 却不是这样,你可以不断地在各个项目中完善你的代码,添加额外的新的或者现存的 Python 元素,也可以随时重用代码。Python 提倡简洁的代码设计、高级的数据结构和模块化的组件,这些特点可以让你在提升项目的范围和规模的同时,确保灵活性、一致性并缩短必要的调试时间。

“可升级”这个术语最经常用于衡量硬件的负载,通常指为系统添加了新的硬件后带来的性能提升。我们乐于在这里对这个引述概念加以区分,我们试图用“可升级”来传达一种观念,这就是:Python 提供了基本的开发模块,你可以在它上面开发你的软件,而且当这些需要扩展和增长时,Python 的可插入性和模块化架构则能使你的项目生机盎然和易于管理。

可混合、可扩展、可嵌入

如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用 C 或 C++ 完成那部分程序,然后从你的 Python 程序中调用。

就算你的项目中有大量的 Python 代码,你也依旧可以有条不紊地通过将其分离为多个文件或模块加以组织管理。而且你可以从一个模块中选取代码,而从另一个模块中读取属性。更棒的是,对于所有模块,Python 的访问语法都是相同的。不管这个模块是 Python 标准库中的还是你一分钟之前创造的,哪怕是你用其他语言写的扩展都没问题!借助这些特点,你会感觉自己根据需要“扩展”了这门语言,而且你已经这么做了。

代码中的瓶颈,可能是在性能分析中总排在前面的那些热门或者一些特别强调性能的地方,可以作为Python 扩展用 C 重写。需要重申的是,这些接口和纯 Python 模块的接口是一模一样的,乃至代码和对象的访问方法也是如出一辙的。唯一不同的是,这些代码为性能带来了显著的提升。自然,这全部取决你的应用程序以及它对资源的需求情况。很多时候,使用编译型代码重写程序的瓶颈部分绝对是益处多多的,因为它能明显提升整体性能。

程序设计语言中的这种可扩展性使得工程师能够灵活附加或定制工具,缩短开发周期。虽然像 C、 C++ 乃至 Java 等主流第三代语言(3GL)都拥有该特性,但是这么容易地使用 C 编写扩展确实是 Python 的优势。此外,还有像 PyRex 这样的工具,允许 C 和 Python 混合编程,使编写扩展更加轻而易举,因为它会把所有的代码都转换成 C 语言代码。

因为 Python 的标准实现是使用 C 语言完成的(也就是 CPython),所以要使用 C 和 C++ 编写 Python 扩展。Python 的 Java 实现被称作 Jython,要使用 Java 编写其扩展。最后,还有 IronPython,这是针对。NET 或 Mono 平台的 C# 实现。你可以使用 C# 或者 VB.Net 扩展 IronPython。‘

Python 程序可以以多种方式轻易地与其他语言编写的组件 “粘接” 在一起。例如,Python 的 C 语言 API 可以帮助 Python 程序灵活地调用 C 程序。这意味着可以根据需要给 Python 程序添加功能,或者在其他环境系统中使用 Python。

例如,将 Python 与 C 或者 C++ 写成的库文件混合起来,使 Python 成为一个前端语言和定制工具。就像之前我们所提到过的那样,这使 Python 成为一个很好的快速原型工具;首先出于开发速度的考虑,系统可以先使用 Python 实现,之后转移至 C,根据不同时期性能的需要逐步实现系统。

你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。

可移植性

基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。

在各种不同的系统上可以看到 Python 的身影,这是由于在今天的计算机领域,Python 取得了持续快速的成长。因为 Python 是用 C 写的,又由于 C 的可移植性,使得 Python 可以运行在任何带有 ANSI C 编译器的平台上。尽管有一些针对不同平台开发的特有模块,但是在任何一个平台上用 Python 开发的通用软件都可以稍事修改或者原封不动地在其他平台上运行。这种可移植性既适用于不同的架构,也适用于不同的操作系统。

Python 的标准实现是由可移植的 ANSI C 编写的,可以在目前所有的主流平台上编译和运行。例如,如今从 PDA 到超级计算机,到处可以见到 Python 在运行。Python 可以在下列平台上运行 (这里只是部分列表):

  • Linux 和 UNIX 系统。
  • 微软 Windows 和 DOS (所有版本)。
  • Mac OS (包括 OS X 和 Classic)。
  • BeOS、OS/2、VMS 和 QNX。
  • 实时操作系统,例如,VxWorks。
  • Cray 超级计算机和 IBM 大型机。
  • 运行 Palm OS、PocketPC 和 Linux 的 PDA。
  • 运行 Windows Mobile 和 Symbian OS 的移动电话。
  • 游戏终端和 iPod。

除了语言解释器本身以外,Python 发行时自带的标准库和模块在实现上也尽可能地考虑到了跨平台的移植性。此外,Python 程序自动编译成可移植的字节码,这些字节码在已安装兼容版本 Python 的平台上运行的结果都是相同的。

这意味着 Python 程序的核心语言和标准库可以在 Linux、Windows 和 其他带有 Python 解释器的平台无差别地运行。大多数 Python 外围接口都有相关平台相关的扩展 (例如,COM 支持 Windows),但是核心语言和库在任何平台都一样。就像之前我们提到的那样,Python 还包含了一个叫做 tkinter 的 Tk GUI 工具包,它可以使 Python 程序实现功能完整的,无需做任何修改即可在所有主流 GUI 平台运行的用户图形界面。

易于学习

Python 关键字少、结构简单、语法清晰。这样就使得学习者可以在更短的时间内轻松上手。对初学者而言,可能感觉比较新鲜的东西就是 Python 的面向对象特点了。那些还未能全部精通 OOP (Object Oriented Programming,面向对象的程序设计)的人对径直使用 Python 还是有所顾忌的,但是 OOP 并非必须或者强制的。入门也是很简单的,你可以先稍加涉猎,等到有所准备之后才开始使用。

Python 语言的核心是非常简单易学。实际上,你可以在几天内写出不错的 Python 代码。

如今,许多系统依赖于终端用户可以很快地学会 Python 以便定制其代码的外围工具。

易于使用

运行 Python 程序,只需要简单地键入 Python 程序并运行就可以了。不需要其他语言 (例如,C 或 C++) 所必需的编译和链接等中间步骤。Python 可立即执行程序,这形成了一种交互式编程体验和不同情况下快速调整的能力,往往在修改代码后立即看到程序改变后的效果。

当然,开发周期短仅仅是 Python 易用性的一方面的体现。Python 提供了简洁的语法和强大的内置工具。实际上,Python 曾有种说法叫做 “可执行的伪代码”。由于它减少了其他工具常见的复杂性,当实现相同的功能时,用 Python 程序比采用 C、C++ 和 Java 编写的程序更为简单、小巧,也更灵活。

易于阅读

Python 与其他语言显著的差异是,它没有其他语言通常用来访问变量、定义代码块和进行模式匹配的命令式符号。通常这些符号包括:美元符号($)、分号(;)、波浪号(〜)等。没有这些分神的家伙,Python 代码变得更加定义清晰和易于阅读。让很多程序员沮丧(或者欣慰)的是,不像其他语言,Python 没有给你多少机会使你能够写出晦涩难懂的代码,而是让其他人很快就能理解你写的代码,反之亦然。如前所述,一门语言的可读性让它更易于学习。我们甚至敢冒昧的声称,即使对那些之前连一行 Python 代码都没看过的人来说,那些代码也是相当容易理解的。

易于维护

源代码维护是软件开发生命周期的组成部分。只要不被其他软件取代或者被放弃使用,你的软件通常会保持继续的再开发。这通常可比一个程序员在一家公司的在职时间要长得多了。Python 项目的成功很大程度上要归功于其源代码的易于维护,当然这也要视代码长度和复杂度而定。然而,得出这个结论并不难,因为 Python 本身就是易于学习和阅读的。Python 另外一个激动人心的优势就是,当你在阅读自己六个月之前写的脚本程序的时候,不会把自己搞得一头雾水,也不需要借助参考手册才能读懂自己的软件。

健壮性

没有什么能够比允许程序员在错误发生的时候根据出错条件提供处理机制更有效的了。针对错误, Python 提供了“安全合理”的退出机制,让程序员能掌控局面。一旦你的 Python 由于错误崩溃,解释程序就会转出一个“堆栈跟踪”,那里面有可用到的全部信息,包括你程序崩溃的原因,以及是哪段代码(文件名、行数、行数调用等)出错了。这些错误被称为异常。如果在运行时发生这样的错误,Python 使你能够监控这些错误并进行处理。

这些异常处理可以采取相应的措施,例如解决问题、重定向程序流、执行清除或维护步骤、正常关闭应用程序,亦或干脆忽略掉。无论如何,这都可以有效地缩减开发周期中的调试环节。Python 的健壮性对软件设计师和用户而言都是大有助益的。一旦某些错误处理不当,Python 也还能提供一些信息,作为某个错误结果而产生的堆栈追踪不仅可以描述错误的类型和位置,还能指出代码所在模块。

广泛的标准库

Python 的最大的优势之一是丰富的库,跨平台的,在 UNIX,Windows 和 Macintosh 兼容很好。

Python 有丰富的标准库。为了完成更多特定的任务,Python 预置了许多预编码的库工具,从正则表达式匹配到网络都支持。Python 的库工具在很多应用级的操作中发挥作用。

Python 有丰富的第三方框架。由于 Python 时开放源代码的,它鼓励开发者提供 Python 内置工具之外的预编码工具。从网络上,可以找到 COM、图像处理、CORBA ORB、XML、数据库等很多免费的支持工具。

高效的快速原型开发工具

我们之前已经提到了 Python 是多么的易学易读。但是,你或许要问了,BASIC 也是如此啊,Python有 什么出类拔萃的呢?与那些封闭僵化的语言不同,Python有许多面向其他系统的接口,它的功能足够强大,本身也足够强壮,所以完全可以使用Python开发整个系统的原型。显然,传统的编译型语言也能实现同样的系统建模,但是Python工程方面的简洁性让我们可以在同样的时间内游刃有余地完成相同的工作。此外,大家已经为 Python 开发了为数众多的扩展库,所以无论你打算开发什么样的应用程序,都可能找到先行的前辈。你所要做的全部事情,就是来个“即插即用”(当然,也要自行配置一番)!只要你能想得出来,Python 模块和包就能帮你实现。Python 标准库是很完备的,如果你在其中找不到所需的,那么第三方模块或包就会为你完成工作提供可能。

对于 Python 程序来说,使用 Python 或 C 编写的组件看起来都一样的。正因如此,我们可以在一开始利用 Python 做系统原型,之后再将组件移植到 C 或 C++ 这样的编译语言上。和其他的原型工具不同,当原型确定后,Python 不需要重写。系统中不需要像 C++ 这样执行效率的部分可以保持不变,从而使维护和使用变得轻松起来。

Python 被应用在哪些领域

Python 的应用领域分为如下几类。

系统编程

Python 对操作系统服务的内置接口,使其称为编写可移植的维护操作系统的管理工具和部件 (有时也成为 Shell 工具) 的理想工具。Python 程序可以搜索文件和目录树,可以运行其他程序,用进行或线程进行并行处理等。

Python 的标准库绑定了 POSIX 以及其他常规操作系统 (OS) 工具:环境变量、文件、套接字、管道、进程、多线程、正则表达式模式匹配、命令行参数、标准流接口、Shell 命令启动器、文件名扩展等。此外,很多 Python 的系统工具设计时都考虑了其可移植性。例如,复制目录树的脚本无需做任何修改就可以在几乎所有的 Python 平台上运行。EVE Online 所采用的 Stackless Python 还为多处理需求提供了高级的解决方案。

用户图形接口

Python 的简洁以及快速的开发周期十分合适开发 GUI 程序。Python 内置了 TKinter 的标准面向对象接口 Tk GUI API,使 Python 程序可以生成可移植的本地观感的 GUI。Python/Tkinter GUI 不做任何改变就可以运行在微软 Windows、X Windows (UNIX 和 Linux) 以及 Mac OS (Classic 和 OS X 都支持) 等平台上。一个免费的扩展包 PMW,为 Tkinter 工具包增加了一些高级部件。此外,基于 C++ 平台的工具包 wxPython GUI API 可以使用 Python 构建可移植的 GUI。

诸如 PythonCard 和 Dabo 等一些高级工具包是构建在 wxPython 和 tkinter 的基础 API 之上的。通过适当的库,你可以在 Python 中使用其他的 GUI 工具包,例如,通过 PyQt 使用 Qt、通过 PyGTK 使用 GTK,通过 pyWin32 使用 MFC、通过 IronPython 使用 .NET,以及通过 Jython (Java 版本的 Python) 使用 Swin 等。对于运行于浏览器中的应用或具有一些简单界面需求的应用,Jython 和 Python Web 框架以及服务器端 CGI 脚本 都提供了其他的用户界面的选择。

Internet 脚本

Python 提供了标准 Internet 模块,它使得 Python 程序能够广泛地在多种网络任务中发挥作用,无论是在服务器端还是在客户端都是如此。脚本可以通过套接字进行通信;从发给服务器端的 CGI 脚本的表单中提取信息;通过 FTP 传输文件;解析、生成和分析 XML 文件;发送、接受、编写解析 Email;通过 URL 获取网页;从获取的网页中解析 HTML 和 XML 文件;通过 XML-RPC、SOAP 和 Telnet 通信等。Python 的库使这一切变得相当简单。

不仅如此,从网络上还可以获得很多使用 Python 进行 Internet 编程的第三方工具。例如,HTMLGen 可以从 Python 类的描述中生成 HTML 文件,mod_python 包可以使在 Apache 服务器上运行的 Python 程序更具效率并支持 Python Server Page 这样的服务器端模板,Jython 系统提供了无缝的 Python/Java 集成而且支持在客户端运行的服务器端 Applet。

此外,涌现了许多针对 Python 的 Web 开发工具包,例如,Django、TurboGears、web2py、Pylons、Zope 和 WebWare,它们使得 Python 能够快速构建功能完善和高质量的网站。很多这样的工具包包含了诸如对象关系映射器、模型/视图/控制器架构、服务器端脚本和模板,以及支持 AJAX 等功能,从而提供了完整的、企业级的 Web 开发解决方案。

组件集成

在介绍 Python 作为控制语言时,曾涉及它的组件集成的角色。Python 可以通过 C/C++ 系统进行扩展,并能够嵌套 C/C++ 系统的特性,使其能够作为一种灵活的黏合语言,可以脚本化处理其他系统和组件的行为。例如,将一个 C 库集成到 Python 中,能够利用 Python 进行测试并调用库中的其他组件;将 Python 嵌入到产品中,在不需要重新编译整个产品或分发源代码的情况下,能够进行产品的单独定制。

为了在脚本中使用,在 Python 连接编译好组件时,SWIG 和 SIP 这样的代码生成工具可以让这部分工作自动完成,并且 CPython 系统允许代码混合到 Python 和类似 C 的代码中。更大一些的框架,例如,Python 的微软 Windows 所支持的 COM,基于 Java 实现的 Jython,基于 .NET 实现的 IronPython 和各种 CORBA 工具包,提供了多种不同的脚本组件。例如,在 Windows 中,Python 脚本可利用框架对微软 Word 和 Excel 文件进行脚本处理。

数据库编程

对于传统的数据库需求,Python 提供了对所有主流关系数据库系统的接口,例如,Sybase、Oracle、Informix、ODBC、MySQL、PostgreSQL、SQLite 等。Python 定义了一种通过 Python 脚本存取 SQL 数据库系统的可移植的数据库 API,这个 API 对于各种底层应用的数据库系统都时统一的。例如,因为厂商的接口实现为可移植的 API,所以一个写给自由软件 MySQL 系统的脚本在很大程度上不需改变就可以工作在其他系统上 (例如,Oracle) —— 你只需要将底层的厂商接口替换掉就可以实现。

Python 标准的 pickle 模块提供了一个简单的对象持久化系统;它能够让程序轻松地将整个 Python 对象保存和恢复到文件和文件类的对象中。在网络上,同样可以找到名叫 ZODB 的第三方系统,它为 Python 脚本提供了完整的面向对象数据库系统,系统 SQLObject 可以将关系数据库映射至 Python 的类模块。并且,从 Python 2.5 版本开始,SQLite 已经成为 Python 自带标准库的一部分了。

数值计算和科学计算编程

我们之前提到过的 NumPy 数值编程扩展包括很多高级工具,例如,矩阵对象、标准数学库的接口等。通过将 Python 与出于速度考虑而使用编译语言编写的数值计算的常规代码进行集成,NumPy 将 Python 变成一个慎密严谨并且简单易用的数值计算工具,这个工具通常可以替代已有的代码,而这些代码都是 FORTRAN 或 C++ 等编译语言编写的。其他一些数值计算工具为 Python 提供了动画、3D 可视化、并行处理等功能的支持。例如,常用的 SciPy 和 ScientificPython 扩展,为使用科学编程工具以及 NumPy 代码提供了额外的库。

游戏、图像、人工智能、XML、机器人 等

Python 的应用领域很多,远比本书提到的多得多。例如:

  • 可以利用 pygame 系统使用 Python 对图形和游戏进行编程。
  • 使用 PySerial 扩展在 Windows、Linux 以及更多系统上进行串口通信。
  • 用 PIL、PyOpenGL、Blender、Maya 和 其他的一些工具进行图像处理。
  • 用 PyRo 工具包进行机器人控制编程。
  • 用 xml 库、xmlrpclib 模块 和 其他一些第三方扩展进行 XML 解析。
  • 使用神经网络仿真器和专业的系统 shell 进行 AI 编程。
  • 使用 NLTK 包进行自然语言分析。

你甚至可以使用 PySol 程序下棋娱乐。可以从 PyPI 网站或通过网络搜索 (请在 http://www.python.org 上获得具体链接)

如今谁在使用 Python

Python 也被一些公司应用于商业产品的开发上,例如:

  • YouTube 视频分享服务大部分是由 Python 编写的。
  • 流行的 P2P 文件分享系统 BitJorrent 是一个 Python 程序。
  • EVE Online 这款大型多人网络游戏 (Massively Multiplayer Online Game,MMOG),广泛地使用 Python。
  • Maya 这款强大的集成化 3D 建模和动画系统,提供了一个 Python 脚本编程 API。
  • Intel、Cisco、Hewlett-Packard、Seagate、Qualcomm 和 IBM 使用 Python 进行硬件测试。
  • Industrial Light & Magic、Pixar 等公司使用 Python 制作动画电影。
  • 在经济市场预测方面,JPMorgan Chase、UBS、Getco 和 Citadel 使用 Python。
  • NASA、Los Alamos、Fermilab、JPL 等使用 Python 实现科学计算任务。
  • iRobot 使用 Python 开发了商业机器人真空吸尘器。
  • ESRI 在其流行的 GIS 地图产品中使用 Python 作为终端用户的定制工具。
  • NSA 在加密和智能分析中使用 Python。
  • IronPort 电子邮件服务器产品中使用了超过 100 万行的 Python 代码实现其作业。
  • OLPC 使用 Python 建立其他用户界面和动作模块。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值