Python编程基础教程
上QQ阅读APP看书,第一时间看更新

第1章 Python简介

学完本章,你将能够

了解Python的历史

理解Python的重要性及特点

知道在哪些领域可以使用Python

安装Anaconda

艺术是人类创造力的一种表现,因此编程也是一种艺术。因此,编程语言的选择非常重要。本书介绍Python,这是一种能够帮助你成为伟大的艺术家的语言。图灵奖获得者、美国普度大学教授艾伦·佩利(A. J. Perlis)曾经说过:“如果一种语言不能对你思考编程的方式产生影响,那么这种语言是不值得学习的。”

Python是一种值得学习的语言。学习Python不仅会激发你用最简单的方式完成高度复杂的任务,还会打破传统编程范型的藩篱。Python是能够改变你的编程方式进而改变你看问题的角度的一种语言。

Python是吉多·范·罗苏姆(Guido Van Rossum)在20世纪80年代后期开发的一种功能强大的、过程式的、面向对象的编程语言。Python这个名字来自一个名为Monty Python的戏剧团体。Python当前应用于各种开发领域,包括软件开发、Web开发、桌面GUI开发、教育和科学计算应用开发。因此,它实际上涉足了所有的开发领域。Python之所以很流行,主要归功于它的简单性和健壮性。当然,还有很多其他的因素,本章也会介绍这些。

很多第三方的模块可以完成上述的任务。例如,基于Python的Django是一款非常流行的Web开发框架,追求干净而快速的开发,加上支持HTML、Emails、FTP等,Django因此成为Web开发的不错选择。

第三方库也可以用于软件开发。其中,最典型的例子就是用于构建控件的Scions。结合第三方库的功能和支持,Python也可以大量用于GUI开发和移动应用开发,例如,Kivy可以用于开发多触点的应用程序。

Python还用于科学计算和分析。SciPy用于工程和数学,IPython用于并行计算。从事统计和机器学习领域的读者将会发现这些库非常有用并且易于使用。SciPy提供了和Matlab类似的功能,并且能够用于处理多维数组。图1.1概括了Python的应用领域。

图1.1 Python的一些应用领域

本章介绍Python编程语言。本章按照如下的顺序讲解:1.2节介绍Python的特点,1.3节介绍编程范型,1.4节介绍Python的发展历史和应用前景,1.5节介绍Anaconda的安装,1.6节是本章小结。

如前所述,Python是一种简单但功能强大的编程语言。Python是可移植的。它拥有内置的类型和功能众多的库,并且它是免费的。本节将简单介绍Python的特点和功能。

Python很容易学习和理解。实际上,如果你有某种语言的编程背景,你会发现,Python优雅而简洁。去掉了花括号和圆括号使Python代码更加简短易懂。此外,Python中的一些任务很容易实现。例如,要交换两个数字,用Python语句(a, b)=(b, a)很容易实现。

学习某种新的东西可能是一项耗费精力且复杂的任务。然而,Python的简单性大大降低了学习它的难度。虽然学习Python中的高级功能可能会有点复杂,但是这值得投入精力。用Python实现的项目也很容易理解。Python代码简洁而高效,因此易于理解和管理。

在大多数的项目中,测试新的技术要进行很多修改,并且要重新编译和重新运行。这使测试代码成为一项困难而耗时的任务。在Python中,很容易运行代码。实际上,我们在Python中运行的是脚本。

在本章稍后,你将会看到,Python还为用户提供了一种可交互的编程环境,可以在其中独立地运行命令。

Python的语法很简单,这使得学习和理解编程很容易。根据大多数人的经验,Python最吸引人的3个特点就是简单、短小和灵活。

如果你从事一个较大的项目,可能会有一个较大的团队,那么可能某些团队成员擅长其他的编程语言。这可能会导致在核心的Python代码中要嵌入一些以其他语言编写的模块。Python允许甚至支持这么做。

对于管理和对象相关的内存,Python有自己的方式。当在Python中创建一个对象的时候,把内存动态地分配给它。当对象的生命周期结束的时候,其占用的内存会被收回。Python的内存管理使程序更加高效。

在后面的各章中,我们将会看到,Python拥有内置的对象类型。这使任务很容易完成并且易于管理。此外,Python可以很好地处理这些和对象相关的问题。

在Python中,完成任务变得很容易。这是因为大多数常见的任务(实际上,有些任务并不是太常见)已经用Python中内置的库完成了。例如,Python拥有能够帮助用户开发GUI的库、编写移动应用程序的库、实现安全功能的库,甚至有读取MIR图像的库。在后面的各章中,我们将会看到,库和辅助工具甚至能够使得模式识别这样的复杂任务很容易完成。

用Python编写的程序可以在几乎所有已知的平台上运行,如Windows、Linux或Mac平台。Python自身就是用C编写的。

Python并不是专有的软件。任何人都可以下载各种各样可用的Python编译器。此外,在发布用Python开发的代码的时候,不会有任何的法律问题。

在过程式编程语言中,程序实际上是按照顺序执行的一组语句。程序所拥有的唯一的可选择性(术语叫作可管理性),就是将其划分为较小的模块。例如,C就是一种过程式编程语言。Python支持过程式编程。本书前8章将介绍过程式编程。

Python主要关注一个类的实例。类的实例叫作对象。类是对要解决的问题有重要意义的一个现实的或虚拟的实体,它具有鲜明的边界。例如,在负责学生管理的一个程序中,“student”可能是一个类。我们可以通过方法来创建类的实例并完成要实现的任务。Python是一种面向对象的语言。本书第9~13章将介绍面向对象编程。

Python也支持函数式编程。此外,Python支持数据不可变性、尾调用优化等。拥有函数式编程背景的开发人员应该听说过这些术语。函数式编程超出了本书的讨论范围。然而,本书后面各章会讨论上面提到的这些特性。

介绍完Python的特点,我们现在来看看Python的发展历史和应用前景。本节简短地介绍Python的发展历史和应用前景,并且激励读者去学习和使用这门语言。

Python是使用C编写的。它是由吉多·范·罗苏姆(Guido Van Rossum)发明的。这里提醒一下读者,Python这门语言和蟒蛇或蛇没有任何关系。这种语言的名字来自一部名为Monty Python’s Flying Circus的喜剧,而这是吉多·范·罗苏姆最喜欢的喜剧之一。许多人认为Python有趣的地方在于富有灵感。

Python之所以易于学习,是因为其核心相当精练。Python之所以如此简单,也是因为开发者期望能够发明一种简单的、易于学习而功能强大的语言。

由于一群专业人士致力于为世界提供一种容易而强大的语言,Python得到了持续的改进和完善。随着这门语言的发展,出现了很多Python兴趣团体和论坛。Python的修改可通过Python增强项目(Python Enhancement Project,PEP)的形式来提出。Python软件基金会(Python Software Foundation,PSF)具体负责这项工作。

Python用于完成很多的任务,其中,最重要的一些任务如下所示:

•图形用户界面(Graphical User Interface,GUI)开发;

•Web页面脚本编程;

•数据库编程;

•原型设计;

•游戏开发;

•基于编程的组件开发。

如果你使用的是UNIX或Linux系统,那么你不需要安装Python。这是因为在UNIX和Linux系统中,Python通常是预先安装好的。然而,如果你使用的是Windows系统,那么你需要下载Python。一旦决定下载Python,请查找它的最新版本。读者需要注意确保所下载的版本不是alpha版或beta版。下一节将简单介绍下载开源的发布版软件Anaconda的步骤。

很多针对Python的开发环境可供使用,其中的一些如下:

•PyDev with Eclipse;

•Emacs;

•Vim;

•TextMate;

•Gedit;

•Idle;

•PIDA(Linux版,基于Vim);

•NotePad++(Windows版,基于Vim);

•BlueFish(Linux版,基于Vim)。

要安装Anaconda,请先访问其官方网站并选择相应的安装程序(Windows或Mac OS或Linux版)。本节将介绍在Windows系统上安装Anaconda的步骤。

首先,必须选择安装程序(32位的或64位的)。然后,在所选的安装程序上单击并下载.exe文件。安装程序会要求你将其安装到默认的位置。你也可以提供一个新的位置。在安装的过程中,你可能需要关闭防病毒软件。图1.2到图1.6展示了详细的安装步骤。

图1.2 安装程序的欢迎界面,要求用户关闭所有运行的应用程序然后单击Next按钮

图1.3 同意Anaconda3 4.3.0 (32-bit)的许可协议

图1.4 选择要为个别用户还是所有用户安装Anaconda

图1.5 选择安装到哪个文件夹

图1.6 决定是否要将Anaconda添加到path环境变量中,以及是否要将Anaconda注册为默认的Python 3.6版本

接下来,安装过程就开始了。安装结束后,会出现图1.7和图1.8所示的界面。

图1.7 安装完成后出现此界面

图1.8 用户可以选择在云上共享笔记本

一旦安装了Anaconda,就可以打开Anaconda并运行脚本了。图1.9展示了Anaconda的导航界面。从各种可用的选项中,可以选择适合你的选项。例如,可以打开QtConsole并运行命令/脚本。图1.10展示了QtConsole的界面。这里写入的命令你现在可能还看不懂,等到学习后面几章的时候就一目了然了。

图1.9 Anaconda的导航界面

图1.10 QtConsole

在继续学习之前,你必须先记住Python和其他语言的一些不同之处。以下几点可以帮助你避免混淆。

•在Python中,语句并不是以任何特殊字符而结束的。在Python中以换行符表示语句的结束。如果一条语句跨越多行,那么下一行必须以一个斜杠(\)开头。

•在Python中,缩进用来表示循环的开始。Python中的循环并不会以分隔符或关键字开始或结束。

•用Python编写的文件通常另存为.py文件。

•在Python程序中,不需要声明一个变量的类型。

Python语言的核心内容很少,因此很容易学习。此外,有些内容几乎是所有语言中都有的,如if/else、循环和异常处理等。

本章介绍了Python及其特点。Python支持3种编程范型,即过程式编程、面向对象编程和函数式编程。本章为学习后面的内容打下了一个基础。本章还明确了本书中的代码需要在Python 3.X上运行。

PEP(Python Enhancement Project):表示Python增强项目。

PSF(Python Software Foundation):表示Python软件基金会。

•Python是一种功能强大的、过程式的、面向对象的、函数式的编程语言,它是由吉多·范·罗苏姆(Guido Van Rossum)在20世纪80年代晚期发明的。

•Python是开源的。

•Python的应用领域包括软件开发、Web开发、桌面GUI开发、教育和科学计算应用开发等。

•Python由于其简单性和健壮性而受欢迎。

•Python很容易与C++和Java交互。

•SciPy用于工程和数学计算,IPython用于并行计算等,Scions用于构建控件。

•Python的各种开发环境包括PyDev with Eclipse、Emacs、Vim、TextMate、Gedit、Idle、PIDA(Linux版,基于Vim)、NotePad++(Windows版)和BlueFish(Linux版)。

选择题部分选择题的正确答案不止一个。——编辑注

1.Python可以继承如下______语言创建的类。

(a)只有Python

(b)Python、C++

(c)Python、C++、C#和Java

(d)以上都不对

2.______发明了Python。

(a)Monty Python

(b)Guido Van Rossum

(c)Dennis Richie

(d)以上都不对

3.Monty Python是______。

(a)Python编程语言的创始人

(b)英国的喜剧团体

(c)美国乐队

(d)Dosey Howser的兄弟

4.在Python中,______库和工具。

(a)不支持

(b)支持但并不鼓励

(c)支持并鼓励

(d)支持(只有PSF的那些才支持)

5.Python拥有______。

(a)内置的对象

(b)数据类型

(c)以上都对

(d)以上都不对

6.Python是一种______。

(a)过程式语言

(b)面向对象语言

(c)函数式语言

(d)以上都对

7.由于没有数据类型,因此一段Python代码适用于各种对象。这称为______。

(a)动态绑定

(b)动态类型

(c)动态领导

(d)以上都不对

8.______是自动内存管理。

(a)自动给对象分配内存

(b)在生命周期结束的时候收回内存

(c)以上都对

(d)以上都不对

9.PEP的全称是______。

(a)Python Ending Procedure

(b)Python Enhancement proposal

(c)Python Endearment Project

(d)以上都不对

10.PSF的全称是______。

(a)Python Software Foundation

(b)Python Selection Function

(c)Python Segregation Function

(d)以上都不对

11.Python能用于______开发。

(a)GUI

(b)Web脚本

(c)游戏

(d)以上都对

12.使用Python能够进行______。

(a)系统编程

(b)基于编程的组件开发

(c)科学计算编程

(d)以上都对

13.Python用在______中。

(a)Google

(b)Raspberry Pi

(c)Bit Torrent

(d)以上都对

14.Python用在______中。

(a)App Engine

(b)YouTube共享

(c)实时编程

(d)以上都对

15.PyPy和IDLE两种程序中更快的是______。

(a)PyPy

(b)IDLE

(c)两者一样快

(d)取决于任务

1.写出使用Python的3个项目的名称。

2.说明Python的几种应用领域。

3.Python是什么类型的编程语言(过程式、面向对象或函数式)?

4.什么是PEP?

5.什么是PSF?

6.谁负责管理Python?

7.Python是开源软件还是专有软件?

8.Python能够支持什么语言?

9.说明Python的发展历史。

10.说出几种Python编辑器。

11.Python有哪些特点?

12.和其他语言相比,使用Python的优势有哪些?

13.什么是动态类型?

14.Python有数据类型吗?

15.Python和Java有何不同?