第一章
1. python定义
继承了传统编译语言的强大性和通用性,也借鉴了简单脚本和解释型语言的易用性
2. python起源
1989年底罗萨姆始创了python。他期望有一种工具可以完成日常系统管理任务,并能够访问Amoeba分布式操作系统的系统调用。罗萨姆为此创造出了一种通用的程序设计语言。1991年,python发布了第一个公开发行版。
3. python特点
3.1 高级
语言的升级:汇编语言→C→C++\Java等现代编译语言→可以进行系统调用的解释性脚本语言,perl、python等。
这些语言都有高级的数据结构:
- 比如python有列表(数组)和字典(哈希表)内建于语言本身。
- C中,混杂数组(python中的列表)和哈希表(python中的字典)没有标准库,需要重复实现。
- C++使用标准模板库改善了这一情况,但还是很难与python的列表和字典的简洁和易读相提并论的。
3.2 面向对象
python的面向对象特性是与生俱来的。python不仅是一门面向对象语言,它融合了多种编程风格,比如借鉴了像Lisp这样的函数语言的特性。
3.3 可升级
Python 提倡简洁的代码设计、高级的 数据结构和模块化的组件,这些特点可以让你在提升项目的范围和规模的同时,确保灵活性、 一致性并缩短必要的调试时间。
我们试图用“可升级”来传达一种观 念,这就是:Python 提供了基本的开发模块,你可以在它上面开发你的软件,而且当这些需要扩展和增长时,Python 的可插入性和模块化架构则能使你的项目生机盎然和易于管理
3.4 可移植性
在各种不同的系统上可以看到 Python。
因为 Python 是用 C 写的,又由于 C 的可移植性,使得 Python 可以运行 在任何带有 ANSI C 编译器的平台上。
尽管有一些针对不同平台开发的特有模块,但是在任何一个平台上用 Python 开发的通用软件都可以稍事修改或者原封不动的在其他平台上运行。这种可移植性既适用于不同的架构,也适用于不同的操作系统。
3.5 可扩展
就算项目中有大量的 Python 代码,也可以有条不紊地通过将其分离为多个文件或模块加以组织管理。而且你可以从一个模块中选取代码,而从另一个模块中读取属性。
对于所有模块,Python 的访问语法都是相同的。不管这个模块是标准库的还是自己创建的,哪怕是用其他语言写的扩展。
代码中的瓶颈,可能是在性能分析中总排在前面的那些热门或者一些特别强调性能的地方, 可以作为 Python 扩展用 C 重写。很多时候,使用编译型代码重写程序的瓶颈部分绝对是益处多多的,因为它能明显提升整体性能。
程序设计语言中的这种可扩展性使得工程师能够灵活附加或定制工具,缩短开发周期。
此外,还有像 PyRex 这样的工具,允许 C 和 Python 混合编程,使编写扩展更加轻而易举,因为它会把所有的代码都转换成 C 语言代码。
- Python 的标准实现是使用 C 语言完成的(也就是 CPython),所以要使用 C 和 C++ 编写 Python 扩展。
- Python 的 Java 实现被称作 Jython,要使用 Java 编写其扩展。
- IronPython,这是针对 .NET 或 Mono 平台的 C# 实现。可以使用 C# 或者 VB.Net 扩展 IronPython。
3.6 易学
Python 关键字少、结构简单、语法清晰。
可能感觉比较新鲜的东西可能就是 Python 的面向对象特点了。
3.7 易读
python没有其他语言通常用来访问变量、定义代码块和进行模式匹配的命令式符号。
Python 没有给你多少机会使你能够写出晦涩难懂的代码,而是让其 他人很快就能理解你写的代码,反之亦然。
3.8 易维护
Python 项目的成功很大程度上要归功于其源代码的易于维护。得出这个结论并不难,因为 Python 本身就是易于学习和阅读的。
3.9 健壮性
python允许程序员在错误发生的时候根据出错条件提供处理机制。
一旦程序由于错误崩溃,解释程序就会转出一个“堆栈跟踪”,那里面有可用到的全部信息,包括你程序崩溃的原因以及那段代码(文件名、行数、行数调用等等)出错了。这些错误被称为异常。如果在运行时发生这样的错误,Python 使你能够监控这些错误并进行处理。
这些异常处理可以采取相应的措施,例如解决问题、重定向程序流、执行清除或维护步骤、 正常关闭应用程序、亦或干脆忽略掉。
3.10 高效的快速原型开发工具
与那些封闭僵化的语言不同,Python 有许多面向其他系统的接口,它的功能足够强大和强壮,所以完全可以使用 Python 开发整个系统的原型。
显然, 传统的编译型语言也能实现同样的系统建模,但是 Python 工程方面的简洁性可以在同样的时间内游刃有余的完成相同的工作。
此外,大家已经为 Python 开发了为数众多的扩展库,无论你打算开发什么样的应用程序,都可能找到先行的前辈。你所要做的全部事情,就是来 个“即插即用”!
3.11 内存管理器
C 或者 C++最大的弊病在于内存管理是由开发者负责的。
Python 中,由于内存管理是由 Python 解释器负责的,所以开发人员就可以从内存事务中解放出来,全神贯注于最直接的目标,仅仅致力于开发计划中首要的应用程序。这会使错误更少、程序更健壮、开发周期更短。
3.12 解释器和(字节)变异性
Python 是一种解释型语言,这意味着开发过程中没有了编译这个环节。
由于不是以本地机器码运行,纯粹的解释型语言通常比编译型语言运行的慢。
然而,类似于 Java,Python 实际上是字节编译的,其结果就是可以生成一种近似机器语言的中间形式。这不仅改善了 Python 的性能,还同时使它保持了解释型语言的优点。
Python 源文件通常用.py 扩展名。当源文件被解释器加载或者显式地进行字节码编译的时候会被编译成字节码。由于调用解释器的方式不同,源文件会被编译成带有.pyc 或.pyo 扩展名的文件。
4. 下载和安装python
得到所有 Python 相关软件:去访问它的网站(http://python.org)
Python 的可应用平台非常广泛。可以将其划分成如下的几大类和可用平台:
- 所有 Unix 衍生系统(Linux,MacOS X,Solaris,FreeBSD 等等)
- Win32 家族(Windows NT,2000,XP 等等)
- 早期平台:MacOS 8/9,Windows 3.x,DOS,OS/2,AIX
- 掌上平台(掌上电脑/移动电话):Nokia Series 60/SymbianOS,Windows CE/PocketPC,Sharp Zaurus/arm-linux,PalmOS
- 游戏控制台:Sony PS2,PSP,Nintendo GameCube
- 实时平台:VxWorks,QNX
- 其他实现版本:Jython,IronPython,stackless
- 其他
一些平台有其对应二进制版本, 可以直接安装,另外一些则需要在安装前手工编译。
Unix 衍生系统(Linux,MacOS X,Solaris,FreeBSD 等等)
基于 Unix 的系统可能已经安装了 Python。通过命令行运行 Python,查看它是否在搜索路径中而且运行正常。
Windows/DOS 系统
首先从前文提到的 python.org 网站下载 msi 文件(例如,python-2.5.msi),之后执行该文件安装 Python。
如果打算开发 Win32 程序,例如使用 COM 或 MFC,或需要 Win32 库,强烈建议下载并安装 Python 的 Windows 扩展。
之后就可以通过 DOS 命令行窗口或者 IDLE 和 Pythonwin 中的一个来运行 Python 了,IDLE 是 Python 缺省的 IDE(Integrated Development Environment,集成开发环境),而 Pythonwin 则来自 Windows 扩展模块。
自己动手编译 Python
对绝大多数其它平台 , 下载 .tgz 文件, 解压缩这些文件, 执行以下操作以编译Python:
1. ./configure
2. make
3. make install
关于安装位置
如今,在系统上安装多种版本的 Python 比较常见。要设置好库文件的安装位置。
- Unix 中,可执行文件通常会将 Python 安装到/usr/local/bin 子目录下,而库文件则通常安装在/usr/local/lib/python2.x 子目录下,其中的 2.x 是你正在使用的版本号。
- MacOS X 系统中,Python 则安装在/sw/bin 以及/或者 /usr/local/bin 子目录下。而库文件则在/sw/lib,/usr/local/lib, 以及/或者 /Library/Frameworks/Python.framework/Versions子 目录下。
- Windows 中,默认的安装地址是 C:\Python2x。请避免将其安装在 C:\Program Files 目录下(虽然这是通常安装程序的文件夹)。DOS 是不支持“Program Files” 这样的长文件名的,它通常会被用“Progra~1”这个别名代替。这有可能给程序运行带来一些麻烦。所以,将 Python 安装在 C:\Python 目录下,这样标准库文件就会被安装在 C:\Python\Lib 目录下。
5. 运行python
有三种不同的办法来启动 Python:
- 最简单的方式就是交互式的启动解释器,每次输入一行Python 代码来执行。
- 另外一种启动 Python 的方法是运行 Python 脚本。这样会调用相关的脚本解释器。
- 最后一种办法就是用集成开发环境中的图形用户界面运行 Python。集成开发环境通常整合了其他的工具,例如集成的调试器、文本编辑器,而且支持各种像 CVS 这样的源代码版本控制工具。
5.1 命令行上的交互式解释器
在命令行上启动解释器,你马上就可以开始编写 Python 代码。
Unix 衍生系统(Linux,MacOS X,Solaris,FreeBSD 等等)
Windoes/DOS 环境