Python是一种动态解释型的编程语言。Python简单易学、功能强大,支持面向对象、函数式编程。Python可以在Windows、UNIX等多个操作系统上使用,同时Python可以在Java、.NET等开发平台上使用,因此也被称为“胶水语言”。Python的简洁性、易用性使得开发过程变得简练,特别适用于快速应用开发。
本章的知识点:
·Python的特征
·Python开发环境的配置
·Python程序的编写
·不同开发平台对Python的支持
Python语言是由Guido van Rossum在1989年开发的,并最终于1991年初发表。Guido van Rossum曾是CWI公司的一员,使用解释性编程语言ABC开发应用程序,这种语言在软件开发上有许多局限性。由于他要完成系统管理方面的一些任务,需要获取Amoeba机操作系统所提供的系统调用能力。虽然可以设计Amoeba的专用语言实现这个任务,但是van Rossum计划设计一门更通用的程序设计语言。Python就此诞生了。
Python语言已经诞生20多年了,正逐渐发展为主流程序设计语言之一,目前在TIOBE编程语言排行榜中长期占据第八的位次。由于Python语言的动态性,程序解释执行的速度比编译型语言慢。但是随着Python语言的不断优化,一些诸如PyPy项目的不断发展,以及计算机硬件技术的不断发展,动态语言已经越来越受到工业领域的重视。其中的代表性语言有Python、Ruby、SmallTalk、Groovy等。
众所周知,Java是工业应用领域认可的开发语言。Java与C++相比使用更容易,内部结构也相对简单。而Python的语法特性使得程序设计变得更轻松,用Python能编写出比Java可读性更强的代码。随着Jython等解释器的出现,使得Python可以在Java虚拟机上运行。这样Python可以使用Java丰富的应用程序包。Python与读者熟知的JavaScript非常相似,都是解释执行,而且语法结构有很多相同的地方。JavaScript是浏览器端的客户脚本语言,而Python也可以用于Web方面的开发。
Python作为脚本式语言,吸收了Perl、Tcl等语言的优点,这使得Python具备Tcl的扩展性,同时又具备Perl的文本解析和匹配能力。Python与Lisp也有相似之处,Python可以实现函数式的编程模型。
程序设计语言在不断发展,从最初的汇编语言到后来的C、Pascal语言,发展到现在的C++、Java等高级编程语言。程序设计的难度在不断减小,软件的开发和设计已经形成了一套标准,开发工作已经不再是复杂的任务。最初只能使用机器码编写代码,而现在可以使用具有良好调试功能的IDE环境编程。Python使用C语言开发,但是Python不再有C语言中的指针等复杂数据类型。Python的简洁性使得软件的代码大幅度地减少,开发任务进一步简化。程序员关注的重点不再是语法特性,而是程序所要实现的任务。Python语言有许多重要的特性,而且有的特性是富有创造性的。
1.面向对象的特性
面向对象的程序设计解决了结构化程序设计的复杂性,使得程序设计更贴近现实生活。结构化程序设计把数据和逻辑混合在一起,不便于程序的维护。面向对象的程序设计抽象出对象的行为和属性,把行为和属性分离开,但又合理地组织在一起。Python语言具有很强的面向对象特性,而且简化了面向对象的实现。它消除了保护类型、抽象类、接口等面向对象的元素,使得面向对象的概念更容易理解。
2.内置的数据结构
Python提供了一些内置的数据结构,这些数据结构实现了类似Java中集合类的功能。Python的数据结构包括元组、列表、字典、集合等。内置数据结构的出现简化了程序的设计。元组相当于“只读”的数组,列表可以作为可变长度的数组使用,字典相当于Java中的HashTable类型。内置数据结构的具体使用方法详见第4章。
3.简单性
Python语言的关键字比较少。它没有分号、begin、end等标记,代码块使用空格或制表键缩进的方式来分隔。Python的代码简洁、短小,易于阅读。Python简化了循环语句,即使程序结构很复杂也能快速读懂。详细信息请参考第2章的相关内容。
4.健壮性
Python提供了异常处理机制,能捕获程序的异常情况。此外Python的堆栈跟踪对象能够指出程序出错的位置和出错的原因。异常机制能够避免不安全退出的情况,同时能帮助程序员调试程序。详细信息请参考第9章的相关内容。
5.跨平台性
Python会先被编译为与平台相关的二进制代码,然后再解释执行。这种方式和Java类似,但Python的执行速度提高了。Python编写的应用程序可以运行在Windows、UNIX、Linux等不同的操作系统上。在一种操作系统上编写的Python代码只需做少量的修改,就可以移植到其他的操作系统上。
6.可扩展性
Python是采用C开发的语言,因此可以使用C扩展Python,可以给Python添加新的模块、新的类。同时Python可以嵌入C、C++语言开发的项目中,使程序具备脚本语言的特性。
7.动态性
Python与JavaScript、PHP、Perl等语言类似,它不需要另外声明变量,直接赋值即可创建一个新的变量。
8.强类型语言
Python的变量创建后会对应一种类型,它可根据赋值表达式的内容决定变量的类型。Python在内部建立了管理这些变量的机制,不同类型的变量需要类型转换。
9.应用广泛
Python语言应用于数据库、网络、图形图像、数学计算、Web开发、操作系统扩展等领域。有许多第三方库支持Python。例如,PIL库(目前已经不再维护,取而代之的有Pillow)用于图像处理、NumPy库用于数学计算、WxPython库用于GUI程序的设计、Django框架用于Web应用程序的开发等。
Python的源代码文件以“py”作为后缀。下面编写一段简单的Python程序,创建一个名为hello.py的文件,用于输出字符串“hello world”。
01 if __name__ == "__main__": 02 print("hello world")
【代码说明】
·第1行代码相当于C语言中的main()函数,是Python程序的入口。详细用法请参考第5章的相关内容。
·第2行代码使用print语句输出字符串“hello world”。
输出结果如下所示。
hello world
Python的print语句用于输出字符串的内容,即把双引号中的内容输出到控制台。Python的输入、输出是通过“流”实现的,上述print语句把字符串的内容输出到标准输出流,即输出到控制台。流也可以把结果输出到文件、打印机等,关于流的详细用法请参考7.3节的内容。
Python程序的运行非常简单,命令格式如下所示。
python python_file_path + python_file.py
其中python_file.py表示Python的源代码文件,python_file_path表示python_file.py所在的路径。在DOS窗口中输入如图1-1所示的命令,运行文件hello.py。
图1-1 Python程序的运行
这种运行方式不够直观,而且不便于程序的调试。后面将介绍如何在编辑器EditPlus和开发工具PyCharm中运行Python程序。
Python开发环境的安装和配置非常简单。Python可以在多个平台进行安装和开发,IPython是非常流行、强大而且易用的Python安装包。本节将介绍IPython的安装和Python交互式命令行的使用。
1.4.1 Python的下载和安装
在UNIX系统上默认安装了Python,Python的可执行文件被安装在/usr/local/bin目录中,库文件被安装在/usr/local/python目录中。虽然系统默认安装了Python2与Python3两个版本,但是在终端中的Python默认为Python2,目前一般为Python2.7.5。要使用Python3则需要在终端中输入python3,或者修改默认的版本。而在Windows环境中,Python可以被安装到任何目录中。读者可以到官方网站 www.python.org 下载Python3.3,官方网站提供了Windows、UNIX等不同操作系统的Python安装软件。
用户也可以安装IPython交互式shell,比默认的终端好用很多,支持自动缩进,并且内置了很多有用的功能和函数。其官网地址为 http://ipython.org 。它可以在任何操作系统上使用。Windows用户在安装IPython前需要先安装Anaconda。Anaconda是一种安装管理的程序,使用它可以很方便地完成Python的升级等操作,并且其自带了非常多的Python库,其下载地址为: http://continuum.io/downloads 。选择适合用户机器的版本然后安装即可。安装完成后,用户会发现除了系统默认的cmd.exe外,多了Anaconda Command Prompt的终端,用户可以直接使用该终端或者使用系统默认的cmd.exe。打开终端后,输入python然后按回车键,可能会发现Python的版本为2.7.5或者其他,而不是我们想要的Python3.X。没有关系,打开任意一个终端,输入以下命令:
conda update anaconda oonda create –n py3k python=3.3 anaconda
在安装的过程中会有一些提示,输入y然后按回车键即可。这时可以看到所安装的一系列Python库的相关信息。等安装完成,重新打开终端,输入以下命令:
activate py3k
然后在终端中输入ipython,这时将显式Python版本信息、IPython的版本信息,并启动交互性命令窗口。由于目前Anaconda支持的版本默认是Python2.7,所以每次要使用Python3.3时都需要先切换到py3k下。相关示意图如图1-2和图1-3所示。
图1-2 安装Python3
图1-3 IPython命令行窗口
注意 在IPython交互环境中输入help可以查看帮助信息。
1.4.2 交互式命令行的使用
IPython安装成功后,可以选择使用Anaconda自带的终端或者系统终端。进入终端后,输入ipython就可以启动交互环境。若是使用原生的Python则只需输入python后回车即可启动命令行程序。本书将使用IPython进行介绍。
通过命令行可以直接向解释器输入语句,并输出程序的运行结果。命令行窗口中的“IN[1]”(原生的为“>>>”)提示符后可以输入Python程序。下面使用print语句输出字符串“hello world”,如图1-4所示。
当然也可以在命令行窗口中输入多行Python代码。下面把hello.py中的代码输入到命令行窗口。当输入完程序的最后一行,按两次回车键后即可结束程序,并输出程序的运行结果,如图1-5所示。
图1-4 Python命令行窗口的使用
图1-5 在命令行窗口中输入多行代码
注意 如果要退出交互式命令行,输入exit,然后按下回车键即可。
Python的开发工具非常丰富,有许多强大的IDE(Integrated Development Environment)工具,如Komodo、PythonWin、Eclipse、PyCharm等。这些工具不仅支持图形化操作,而且具备编辑、调试等功能。此外文本编辑器也可作为Python的开发环境,如EditPlus、Vi等。PyCharm是JetBRAINS公司的开发的Python IDE,功能强大,近期还发布了开源社区版本,非常适合于学习。
1.5.1 PyCharm的使用
PyCharm是非常好用的一款跨平台的IDE,使用Java开发,有收费版本和社区免费版,本书将使用社区免费版。下载地址是 http://www.jetbrains.com/pycharm/download/index.html ,下载后安装即可。
安装完成后,首次运行程序会要求设置主题等,可以选择跳过这一步或者选择自己喜欢的主题。设置完后重启,便可进入程序。因为是IDE,所以首先要创建一个项目,这时会要求设置Python路径。按照要求一步步设置即可。
注意 如果使用的是Anaconda,需要选择envs目录下py3k中的python.exe,否则将会使用默认的Python2.7版本。
PyCharm自带了Python命令行交互终端,可以很方便地运行代码和做相关的测试,鼠标移动到左下角,单击Terminal按钮即可打开,非常方便。
单击【File】|【New】菜单,选择对应的文件类型后便可以新建文件,并在其中编写Python程序。现在开始创建hello_world.py文件,编写完后选择【Run】菜单中的Run命令或者按Alt+Shift+F10组合键即可运行代码,如图1-6所示。
图1-6 编写并运行hello_world.py
除此之外,PyCharm还支持快捷跳转、代码重构、代码测试、版本控制、调试等高级功能。
1.5.2 Eclipse IDE的介绍
Eclipse是Java开发的一个集成开发环境,而且是一个开源项目。Eclipse的扩展性非常强,Eclipse不仅可以作为Java的IDE使用,而且还可以开发大量的插件支持其他类型的语言,如C、C++、Python、PHP等。如果要在Eclipse平台上开发Python,需要下载PyDev这个插件。easyeclipse网站提供了Eclipse的各种插件下载,而且可以获取单独运行的Easy Eclipse for Python。下载地址为 www.easyeclipse.org 。
Eclipse的功能非常强大,它实现了Python代码的语法加亮、代码提示和代码补全等智能化的功能。此外Eclipse提供了比PythonWin更强大的调试能力,而且还支持Jython、Pyunit、团队开发等其他功能。
在Eclipse中,源代码被组织到项目(project)中。Eclipse用户界面的结构划分为视图(View)与编辑器(Editor)。视图与编辑器的例子包括:源代码大纲视图、Java源代码编辑器、Python源代码编辑器和文件系统导航视图。Eclipse用户界面包含各种视图(perspective)。视图是通常在执行某种类型活动时使用的一组窗口。Eclipse中的标准视图包括:Debug、Java Browsing、Java、Java Type Hierarchy、Plug-in Development、CVS Repository Exploring、Resource和Install/Update。Easy Eclipse for Python提供了一个Pydev视图。当启动调试模式时,Eclipse会自动切换到Debug视图。本书9.3节将介绍Eclipse for Python的配置和调试方法。
下面在Eclipse的开发环境中编写输出字符串“hello world”的程序,如图1-7所示。
图1-7 Eclipse的开发环境
注意 安装Pydev之前,需要先在计算机中安装Python。
1.5.3 EditPlus编辑器环境的配置
Python也可以使用编辑器进行开发。例如,文本编辑软件EditPlus也能成为Python的编辑、执行环境,甚至可以用于调试程序。EditPlus具备语法加亮、代码自动缩进等功能。下面介绍一下如何配置EditPlus编辑器的开发环境。
1.添加Python群组
运行EditPlus,选择【工具】|【配置用户工具】命令,打开【参数】对话框。单击【添加工具】按钮,在弹出的菜单中选择【程序】命令。新建的群组名称命名为Python,在【菜单文本】文本框中输入python,在【命令】文本框中输入Python的安装路径,在【参数】文本框中输入$(FileName),在【起始目录】文本框中输入$(FileDir)。勾选【捕获输出】选项,Python程序运行后的输出结果将显示在EditPlus的输出栏。否则,运行Python程序后将弹出命令行窗口,并把结果输出到命令行中。设置后如图1-8所示。
单击【确定】按钮,新建一个Python文件,【工具】菜单下将会出现python选项。单击该选项,或使用快捷键Ctrl+1就可以运行Python程序。
2.设置Python高亮和自动完成
EditPlus不仅可以作为Python的开发环境,还支持Java、C#、PHP、HTML等其他类型的语言。不同语言的语法高亮和自动完成的表现形式各不相同。为了实现语法加亮和自动完成功能,需要下载两个特征文件,下载地址为 http://www.editplus.com/files/pythonfiles.zip 。下载后把文件python.acp和python.stx解压到EditPlus的安装目录下。acp后缀的文件表示自动完成的特征文件,stx后缀的文件表示语法加亮的特征文件。在编写Python代码之前,需要先在EditPlus中设置这些特征文件。
(1)选择【文件】|【设置与语法】选项,在【文件类型】列表中选择【python】选项,在【描述】文本框中输入python,在【扩展名】文本框中输入py。
(2)在【设置与语法】选项卡中,在【语法文件】文本框中输入python.stx的路径,在【自动完成】文本框中输入python.acp的路径,如图1-9所示。
图1-8 在EditPlus中添加对Python的支持
图1-9 设置Python的特征文件
(3)Python的语法中不使用begin、end或{、}区分代码块,而是使用冒号和代码缩进的方式区分代码之间的层次关系。单击【制表符/缩进】按钮,打开【制表符与缩进】对话框,设置Python代码的缩进方式,如图1-10所示。在使用IDE工具时,输入冒号代码会自动缩进,用EditPlus也可以设置该功能。在【制表符】和【缩进】文本框中分别输入空格的个数,一般设置为4。选中【启动自动缩进】选项,在【自动缩进开始】选项中输入“:”,单击【确定】按钮,保存设置。
(4)单击【函数模型】按钮,打开【函数模型】对话框,如图1-11所示。在【函数模型正则表达式】文本框中输入[\t]*def[\t].+:。单击【确定】按钮,保存设置。
图1-10 制表符与缩进
图1-11 设置函数模型
至此EditPlus的Python开发环境就设置完成了。EditPlus还可以建立Python文件的模板,以后每次新建Python文件时都可以在模板的基础上编写代码。编写Python代码经常要使用中文,同时也要考虑跨平台的功能,因此可以建立名为template.py的模板文件。template.py的内容如下所示。
#!/usr/bin/python
【代码说明】第1行代码使Python程序可以在UNIX平台运行。
注意 在EditPlus中通过快捷键Ctrl+F11可以查看当前Python文件中的函数列表。
运行Python程序前,需要先保存Python程序。下面使用EditPlus编写一段Python程序,并输出结果,如图1-12所示。
图1-12 EditPlus运行Python程序
Java和.NET是目前工业界非常成熟的两大开发平台。Python可以在这两大开发平台上使用,也可以用Java、C#扩展Python。
1.Jython
Jython是完全采用Java编写的Python解析器。虽然Jython解释器的实现和性能与Python的解释器还有些差距,但是Jython使得Python完全可以应用在Java开发平台下。Jython使得Python程序可以在Java虚拟机上运行,同时Python可以访问Java下的类库和包。Jython也为Java提供了完善的脚本环境,Python在Java应用中可以作为中间层服务的实现语言。Jython使得Java可以扩展Python模块,反过来也可以使用Python编写Java应用。
2.IronPython
IronPython是Python在.NET平台上的实现。IronPython提供了交互式的控制台,该控制台支持动态编译。它使得Python程序员可以访问所有的.NET库,而且完全兼容Python语言。IronPython必须提供.NET 2.0版本的支持。IronPython的出现使得既可以在.NET平台下编写Python代码,又可以调用丰富的.NET类库框架。
本章讲解了Python的历史、特性、开发环境等方面的知识。本章重点讲解了Python开发环境的设置、PyCharm、Eclipse等IDE工具的特点、EditPlus编辑器的设置。下一章将会学习Python的基本语法,包括Python的文件类型、编码规则、数据类型、表达式等方面的内容。
1.Python拥有以下特性:__________,__________,__________,__________,__________,__________,__________,__________,__________。
2.Python______(需要/不需要)编译。
3.以下不属于Python内置数据结构的是( )。
A.数组
B.元组
C.列表
D.字典
4.根据自己的系统与偏好,搭建好Python开发环境,编写“hello world”程序,并运行。