···························································· 第5 章 chapter5 Python语言基础 Python被以一种简洁易读的方式设计,可以用少量的代码高效率地编写程序。 Python能够在Windows、MacOS和Linux/UNIX 等系统兼容运行,同时支持广泛的应 用程序开发,在Web开发、游戏制作、嵌入式开发、数据分析和深度学习等方面都得到了 广泛应用,成为一大主流计算机语言。 5.1 Python 简介及其开发环境 5.1.1 Python 简介 Python由荷兰人吉多·范罗苏姆(GuidovanRossum)开发,1991年第一个版本公 开发行,2002年发布了2.0系列,2008年发布了3.0系列版本,2020年结束对Python2.0 版本的支持。 Python语言具有如下特点。 (1)简单易学。Python有相对较少的关键字,结构简单,具有明确定义的语法,学习 起来更加简单。 (2)免费、开源。Python是自由/开放源码软件之一,源代码被公开在网络上,任何 人都可以无偿使用,同时使用者可以自由地发布这个软件的副本,阅读它的源代码并对 它进行修改。 (3)易于阅读。Python代码具有更清晰的定义形式,具有伪代码的特质,可以让开 发者在开发Python程序时专注于解决问题,而不是纠结于语言本身。 (4)解释性。编译型语言(如C、C++)在执行时需要经过编译,生成机器码后才能执 行。Python直接由解释器执行,但是这并不意味着Python丢掉了编译,实际上Python 是字节编译的,可以生成一种近似机器语言的中间形式。因为纯粹的解释型语言通常比 编译型语言运行慢,Python通过这种方式不仅改善了性能,还同时保持了解释型语言的 优点。之所以说Python是解释型语言,只是其在开发过程中没有显式地调用编译操作, 表现出更多解释型的特性,事实上,编译是存在的。 (5)模块自信。Python的强大体现在“模块自信”上,因为Python不仅有很强大的 自有模块,还有海量的第三方模块,并且很多开发者还在不断贡献自己开发的新模块。 1 72 ◆大学计算机基础 (6)面向对象。所谓面向对象是指将程序功能模块化,并通过调用这些模块来实现 最终的程序功能的思维方式。通过这种方式,各功能模块的独立性得到了保障,从而提 高开发效率和模块再利用率,增强程序的可维护性和稳定性。Python设计之初就已经是 一门面向对象语言,可以进行面向对象编程。 5.1.2 Python 环境搭建 本书主要以Windows系统为例讲解Python环境的搭建和Python程序的运行。在 环境搭建之前,首先打开命令行终端窗口输入python,按Enter键查看自己的计算机是 否具备Python运行环境。如果出现类似图5.1的界面,可以显示Python的版本号,则说 明具备Python环境,如果没有,则需要进行环境搭建。 图5.1 Python命令行窗口 用Python语言进行程序开发,既可选择Python自带的集成开发环境(IDLE),也可 以选择使用PyCharm、Notepad++等作为开发环境。本书选择Python自带的IDLE作 为开发环境,所有示例使用Python3.7.5进行程序的开发和演示。 1.Python解释器安装 计算机执行Python程序时,需要将Python代码翻译为计算机可识别的机器指令语 言,做翻译工作的是Python解释器。可以在Python官网下载Python解释器。 安装Python解释器需要如下几个步骤。 (1)Python下载。打开Python官网主页https://www.python.org/,根据自己的 操作系统版本选择相应的Python版本,下载即可。本书以64位Python3.7.5版本的可 执行安装程序进行安装演示。 (2)在Windows平台安装Python。双击下载包,进入Python安装向导,如图5.2所 示。首先建议选择第二项自定义安装(Customizeinstallation),可以自行设定安装的路 径;然后选择最下面的AddPython3.7toPATH 选项。此选项的功能是把Python的安 装路径添加到系统路径下面,选中这个选项,安装后直接在命令行终端窗口输入python, 按Enter键就可直接调用python.exe,避免安装后还要手动配置Python的环境变量。 安装好Python后,可以打开命令行终端窗口输入python,按Enter键,查看自己的 计算机是否已经具备Python运行环境。 ◆ 第 5 章 Python 语言基础173 图5.2 Python安装向导 2.Python的开发环境 Python解释器安装包将在系统中安装一组与Python开发和运行相关的程序,其中 最重要的两个是PytotoIDLE )。 hn命令行和Pyhn集成开发环境( 在IDLE下运行Python程序有两种方式:交互式和文件式。交互式指Python解释 器即时响应用户输入的每条代码,给出输出结果,这种方式适合单条语法的练习。文件 式是指用户将Python程序写在一个或多个文件中,然后启动Python解释器批量执行文 件中的代码,文件式是编程的主要方式。 1)启动IDLE 安装Pyto可以从“ 菜单→“ →Pyhn3.来启动IDLE 。 hn后, 开始” 所有程序”to7→IDLE, 启动IDLE后,即可打开PythonShel 窗口,通过它可以在交互式模式下执行 Python命令。 2)IDLE交互式运行方法 3所示。 在交互式界面可以进行简单的交互式程序的输入和执行,如图5. 说明:>>>是交互式下的提示符,表示可以在它后面输入要执行的语句。本书中 示例带有>>>符号的代码是指在IDLE的交互式环境下运行的代码,不带此提示符的 代码表示是以文件方式运行的。 3)IDLE文件式运行方法 打开IDLE,按快捷键Ctrl+N打开一个新窗口,或者在菜单中选择File→NewFile 命令,打开新窗口。这个窗口可以进行代码编辑, to保存为. 在其中输入Pyhn代码, py文 件,如图5.ue命令,运行该程 4所示。按快捷键F5或者在菜单中选择Run→RunModl 序,程序运行结果显示在交互式界面,5所示。 如图5. IDLE是一个简单有效的集成开发环境,无论交互式还是文件式,都有助于快速编写 1 74 ◆大学计算机基础 图5.3 IDLE交互式界面 图5.4 IDLE文件式界面 图5.5 程序运行结果显示界面 和调试代码,是小规模Python软件项目的主要编写工具,可以实现语法加亮、段落缩进、 基本文本编辑、Tab键控制和调试程序等基本功能。 5.2 Python 语言基础知识 5.2.1 Python 的程序要素 1.标识符 在Python中会遇到很多名称,如变量名、函数名和模块名等,这些名称从技术上来 第◆5 章 Python 语言基础1 75 说都称为标识符。在Python中,标识符的构成需要满足如下规则。 (1)每个标识符必须以字母或下画线(“_”)开头,后跟字母、汉字、数字或下画线的任 意组合。根据该规则,x、age、stu_id、_x3都是Python中合法的标识符,而3x因以数字开 头,不是合法的标识符。 (2)标识符区分大小写。对于Python来说,stu_id、Stu_id、Stu_ID是不同的名称。 (3)自定义的名称不能与Python的“保留字”相同。Python3.x版本有33个保留 字,如表5.1所示。Python的保留字与其他标识符一样,也对大小写敏感。例如,def是 保留字,但是Def不是,Python允许将Def定义为变量名使用。 表5.1 Python3.x的保留字列表 保 留 字 False def if raise None del import return True elif in try and else is while as except lambda with assert finally nonlocal yield break for not class from or continue global pass 在大多数情况下,编程者可以自由选择符合规则的任何名称,但是需要尽量做到选 择的名称能够描述被命名的事物。 另外,Python还有相当多的内置函数,例如我们会经常用到的print函数,虽然在技 术上可以将这些函数名称标识符用于其他目的,但是一旦将print重新定义,它就无法打 印信息,也会给其他读到代码的用户带来困扰,所以要尽量避免。 2.表达式 产生或计算新数据值的程序代码片段称为表达式,它是编程语言中最基本的程序 结构。表 达式包含值和操作符,并且总是可以求值。在PythonShell中输入表达式时, Shell会计算表达式并打印出结果。 >>>2+2 4 没有操作符的单个值也认为是一个表达式,求值的结果就是它自身。 >>>2 1 76 ◆大学计算机基础 2> >> "hello" 'hello' 一个变量也可作为表达式。例如下面语句,首先变量x 被赋值为5,然后要求 Python对表达式x求值,作为响应,PythonShell打印出x的值5。 >>>x=5 >>>x 5 多个简单的表达式和操作符可以组合成复杂的表达式。对于数字,Python提供了一 组标准的数学运算。表5.2列出了Python的所有数学操作符。 表5.2 数学操作符 操 作 符操 作例 子值 ** 指数3**3 27 % 取余10%3 1 // 整除10//3 3 / 除法10/4 2.5 * 乘法3*3 9 - 减法5-3 2 + 加法5+3 8 以下是两个复杂表达式的示例。 3.9*5+(100-36)/4 ((x1-x2)/2*n)+(y/k**3) 3.给变量赋值 如果要保存一个表达式的值并方便以后引用,可以将其赋值给一个变量。变量的命 名规则要符合标识符的命名规则。 创建一个变量很简单,只需要取一个名字,然后给它赋予一个值,赋值时不需要指定 变量的数据类型。 变量赋值包括3种形式:简单赋值、赋值输入和同时赋值。 1)简单赋值 简单赋值语句具有以下形式: = 这里variable是一个标识符,也称为变量名,expr是一个表达式。赋值的语义是:求 解右侧表达式的值,然后将该值与左侧命名的变量相关联。 第◆5 章 Python 语言基础1 77 在交互式环境下,赋值语句示例如下。 >>>age=20 >>>x=5 >>>x=x+3 >>> name="Lily" 给变量第一次赋值可称为对变量初始化,例如上例中x=5,即把变量x的初始值设 图5.6 变量x赋值展示效果图 置为5。此后可以在表达式中引用变量的值,如上例 中的x=x+3就是引用了x的当前值,计算的结果重 新赋值给变量x。 Python中对变量x赋值就像把一个便利贴放在 值上,并注明“这是x”。当对变量重新赋值时,变量只 需切换到引用新值。图5.6给出上面示例中给变量x 两次赋值的展示效果。 如果一个值不再被任何变量引用,Python会自动从内存中将其清除,以便腾出空间 用于存放其他新值。 2)赋值输入 输入语句的目的是从用户那里获取一些信息,并存储到变量中。在Python中,输入 是用一个赋值语句结合一个内置函数input实现的。 输入语句的形式取决于你希望从用户那里获取的数据类型,对于文本类型的数据, 语句形式如下。 =input() 这里的prompt是一个字符串表达式,用于提示用户输入,示例如下。 >>> name=input("Enter your name:") Enter your name:Lily >>> name 'Lily' 计算机执行上面的第一条语句时,打印出提示语“Enteryourname:”,然后解释器暂 停,等待用户输入,用户输入字符串'Lily'后,该值被赋给变量name。 如果用户希望输入的是一个数字,则需要将input输入的文本数据通过eval或int、 float函数转换为数字,语句形式如下。 =eval(input()) #去 掉外层引号,执行表达式 =int(input()) # 将 数字字符串转换为整数 =float(input()) # 将 数字字符串转换为浮点数 示例如下。 >>> input('Enter your age:') Enter your age:21 1 78 ◆大学计算机基础 '21' >>> eval(input('Enter your age:')) Enter your age:21 21 >>> int(input('Enter your score:')) Enter your score:89 89 >>> float(input('Enter your score:')) Enter your score:89.6 89.6 在input语句中使用int而不是eval,可以确保用户只能输入有效的整数。 3)同时赋值 Python中有一个赋值语句的替代形式,允许同时计算几个值。例如: sum, diff=x+y, x-y 这种形式称为“同时赋值”。语义上,告诉Python首先对右侧的所有表达式求值,然 后将这些值赋给左侧相应的变量,这里sum 得到x和y的和,diff得到x和y的差,上面 的语句等价于以下两个语句: sum=x+y diff=x-y 这种形式使得在Python中交换两个变量的值变得非常容易,可以通过下面的语句实现: x,y=y,x 4.输出语句 Python中使用内置函数print在屏幕上打印信息。 使用print语句打印表达式的值,所有提供的表达式都从左到右求值,然后将结果值 以从左到右的方式显示在输出行,示例如下。 >>> print(2+3) 5> >> print(2,3,2+3) 2 3 5 >>> print('2 和3 的和为',2+3) 2 和3 的和为5 >>> x=4 >>> y=5 >>> print(x,y) 4 5 Python中print()函数默认以换行符结尾,即执行一次print(),则自动换行。以下 代码是通过for循环输出列表元素。 第◆5 章 Python 语言基础1 79 ls=[1,2,3,4,5] for i in ls: print(i) 程序运行结果如下。 12345 实际应用中如果有特殊要求,例如希望列表元素在一行输出,Python3的print()函 数增加了一个end参数,可通过该参数调整输出格式。 上面代码可以改写如下。 ls=[1,2,3,4,5] for i in ls: print(i,end=' ') end=' '表示print语句结束时以空格结尾,这段代码的执行结果如下。 1 2 3 4 5 关于输出语句的其他用法,例如格式化输出,会在后续的学习中逐步学到。 5.缩进 Python与其他编程语言最大的不同是用缩进来区分代码块,缩进的空格数量不限, 但是同一代码块缩进必须一致,一般缩进以一个Tab键为准。 Python的分支结构中程序缩进示例如下。 if True: print('True') #缩进 else: print('False') #缩进 6.注释 注释起到解释或说明的作用,一般写在程序的开头或语句的后面,在程序运行时, Python会忽略注释。 Python中单行注释以#开头,后面的文字直到行尾都是注释,示例如下。 print("Hello world1!") #这是注释 多行注释可以使用多个#号,也可用3个单引号或3个双引号,示例如下。 #这是注释 1 80 ◆大学计算机基础 #print('Hello world1!') #print('Hello world2!') print('Hello world3!') ''' print('Hello world4!') print('Hello world5!') print('Hello world6!') ''' 上面多行注释示例代码运行的结果如下。 Hello world3! 前面的2个和后面的3个print语句因为被注释,所以跳过不执行。 5.2.2 Python 的数据类型 表达式是值和操作符的组合,每个表达式都可以通过求值得到某个值,而每个值都 属于一种数据类型。Python中通过对变量赋值访问不同数据类型的对象。 Python中基本的数据类型有数字类型、字符串类型、列表、元组、字典和集合等,可以 使用type()函数查看变量和常量的数据类型,示例如下。 >>>a=25 >>>print(type(a)) >>> b,c,d=2.5,'HELLO',True >>> print(type(b),type(c),type(d)) 其中,表示数据是整数类型,分 别是浮点数、字符串和布尔类型。 1.数字类型 表示数字或数值的数据为数字类型,Python中提供3种数字类型:整数(int)、浮点 数(float)和复数(complex),分别对应数学中的整数、实数和复数。 1)整数类型 整数类型与数学中的整数一致,共有4种进制表示:十进制、二进制、八进制和十六 进制,默认情况下采用十进制。整数类型的4种进制如表5.3所示。 表5.3 整数类型的4种进制 进 制引导符号示 例 十进制无由字符0~9组成,如1010,79 二进制0b或0B 由字符0~1组成,如0b1010,0B101