Python从入门到精通

978-7-115-54728-6
作者: 陈政强 广州市薯条橙子信息科技有限公司
译者:
编辑: 张丹阳
分类: Python

图书目录:

详情

这是一本Python零基础入门的实战型教程图书,介绍的是当下计算机编程领域颇为流行的Python语言。全书内容包含快速掌握Python的必备基础、Python的交互模式、变量/内存地址与命名、数据类型与结构、字符串、列表元祖、字典、集合、控制语句、函数、文件与IO、面向对象/类、异常处理、并发编程、模块、数据库与网络编程、错误调试与单元测试和版本控制工具等内容。另外,为了让读者能学以致用,本书在最后一章安排了“项目开发实训”,主要包含爬虫和Web搜索系统的开发。 书中穿插了“编程小知识”“笔者有话说”等内容,请读者不要略去这些内容,它们可以帮助大家了解和理解编程过程中的一些原理、技巧,甚至冷知识。 本书适用于作为计算机编程专业的教材图书,也可以作为程序开发工程师的知识拓展图书。注意,本书的教学环境是基于Windows 10系统(64位)编写的,全书内容均采用Python 3.7编写。

图书摘要

版权信息

书名:Python从入门到精通

ISBN:978-7-115-54728-6

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。


版  权

编  著 陈政强 广州市薯条橙子信息科技有限公司

责任编辑 张丹阳

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e54728”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。

内 容 提 要

这是一本Python零基础入门的实战型教程,介绍的是当下计算机编程领域颇为流行的Python语言。全书内容包括Python的必备基础、Python的交互模式、变量/内存地址/变量命名、数据类型与结构、字符串、列表、元组、字典、集合、控制语句、函数、文件操作、面向对象/类、异常处理、并发编程、模块、数据库与网络编程、错误调试与单元测试、版本控制工具等内容。另外,为了让读者能学以致用,本书最后一章安排了“项目开发实训”,主要包含爬虫和Web搜索系统的开发。

书中穿插了“编程小知识”“笔者有话说”等内容,请读者不要略去这些内容,它们可以帮助读者了解和理解编程过程中的一些原理、技巧和经验。

本书适合作为计算机相关专业Python语言程序设计课程的教材,也可以作为程序开发人员的参考图书。注意,本书内容是基于Windows 10操作系统(64位)和Python 3.7编写的。

前  言

Python是一门跨平台的编程语言,例如,将在Windows系统下编写的Python程序移植到类UNIX系统中时,在版本兼容的情况下,不需要修改任何代码。Python语言借鉴了C语言的语法设计,同时结合了ABC语言的优秀特性——面向非专业程序员、简单和语法优美。这让Python在开发者社区中流行起来。虽然Python有让不少初学者难以捉摸的代码强制缩进规则,但对于习惯了代码缩进的开发者来说,这其实是Python有别于其他语言的一个很大的优点。

近几年随着大数据、AI等技术的流行,Python逐渐在各类编程语言中崭露头角,在编程语言排行榜中也一直名列前茅。相比C/C++、Java等编程语言,Python语言学习梯度较平,易学易用,且适用于多类开发领域,如大数据分析、机器学习、计算机视觉等。不仅如此,Python还有着良好的社区开发氛围,所以Python能得到越来越多的计算机编程爱好者的青睐,且越来越流行,也是情理之中。

如何学习编程

初学编程时,读者应对所学的知识建立整体的认识,先学其构架,再探究细节。学一门编程语言,无外乎学习以下5个部分:基本语法、数据类型、数据结构与算法、并发设计和网络编程。建立了整体的认识,了解其大体构架,就大致知道如何学习编程语言了。

以Python学习为例,初学者或普通程序员欲往上进阶,大致需要完成以下4步。

第1步:夯实计算机理论基础。

第2步:精学Python。

第3步:选择一个特定的技术领域,如Web开发、大数据、机器学习、深度学习、计算机视觉或自然语言处理等。

第4步:努力提升自己,精通自己选择的领域。

如何学习Python

学习Python并不等同于学习一个软件,这是一个领域的技术,需要循序渐进、步步为营,切不可择一点而努力。

先学其构架,再探究细节

学得怎么样,从细节里见真知。知识的细节很能突显出一个人的功底扎不扎实。以Python中的变量为例,多数初学者知道怎么定义一个Python变量,可变量到底是什么,问其本质,却鲜有初学者答得出。

夯实基础,方有进阶之路

许多初学者在学习过程中往往追求速度,恨不得三五天内学完本书全部内容,结果是欲速则不达,最后学得零零散散,不甚系统,近乎什么都没学会。大部分初学者之所以迷茫,概因基础不牢。基础若不牢,何以构建知识的高楼大厦?所以长时间困在原地,止步不前!

不只初学者,不少工作几年的程序员也有同样的困扰:学着学着就迷茫了,工作好几年后突然意识到只能做一些低阶的开发工作,不知道接下来该做什么,亦不知该如何进一步提高个人水平。因此,在学习的时候,切忌急功近利,一定要打下扎实的基础,再开始下一个环节的学习。下面介绍打好基础的方法。

学习的6个阶段

(1)快速地学习。在这个阶段只学其轮廓、大概,在脑海里建立起对这门课程的感性认识,只需建立起感性认识,即了解这门课程大概需要学什么。

(2)细究这门课程的来源及历史。通过了解其产生过程、历史,建立起对这门课程的兴趣。例如,Python的发展历史,人工智能的几次大起大落。

(3)为学习这门课程制订学习计划。例如,希望花3个月时间学完,那么对这3个月时间进行细分,计划出哪个时间段该学什么,然后严格按照计划执行。在笔者过往的学习过程中,有时一天学习好几门课程,一本书甚至计划好了一天该看多少页。另外,若这一阶段遇到学习上的难点,可以果断跳过。

(4)学以致用。在这个阶段就是将学过的知识付诸实践。

(5)针对性地学习知识的难点。到了这个阶段,就得问一下自己,还有哪里是没有彻底学明白的,没学明白就继续学。

(6)重复式的学习。学习不是一劳永逸的事,高手都是经历了成千上万次的磨炼才有了现在的成绩。

本书内容

全书一共20章,主要结构为“基础理论学习+课后习题+程序实战+项目开发实训”。对于基础理论的介绍,全书以让读者易于理解为写作前提;对于程序实战知识的介绍,以新颖的“街霸”游戏、影视中的“超杀女”等为故事背景来设计实战小程序;对于项目开发实训的介绍,则以常用的Python Web后端框架Tornado,以及全文搜索引擎Elasticsearch等作为实训项目。

另外,全书穿插了不少“编程小知识”,帮助初学者掌握编程的一些规则和理解专业术语的含义。同时,也加入了“笔者有话说”模块,这些内容都是笔者多年来的编程经验总结,希望对读者有一些帮助。

全书程序实战和项目开发实训均配有源代码和教学视频,获取方法请参考“资源与支持”页。

作者寄语

首先,感谢人民邮电出版社数字艺术分社的邀请。对于我来说,编程可能是一个命中注定的缘分,很荣幸能借此机会分享十多年编程经验。

学习很考验一个人的毅力。长时间地学习,很容易磨灭一个人的学习热情。在这十多年时间里,我见过不少人半途而废,也见过一部分人从对编程的好奇转变为对编程的厌恶。我想告诫读者的是,如果打算投身计算机编程这个领域,那么就要做好长期学习的准备,以及提早做好职业规划。

我很相信缘分。你遇见过的人、做过的选择,都会在岁月的流转中给你带来影响。如果没有当初的选择,我就不会有现在写作这本书的机缘。这本书写得并不完美,不少地方还有待完善。承认自己的不足,并改进不足的地方,这样才能不断精进,更上一层楼。希望读者能够一直保持对学习的热爱,克服学习上的难关,奋勇向前。

资源与支持

本书由异步社区出品,社区(https://www.epubit.com/)为你提供相关资源和后续服务。

配套资源

书中部分实例的源代码

重要知识点、编程实例,以及程序实战的教学视频

可供读者自学和教师教学使用的PPT课件

Python编程基础训练题库及参考答案

Python面试模拟题及参考答案

系统学习Python的建议

要获得以上配套资源,请在异步社区本书页面中点击“配套资源”,跳转到下载页面,按提示进行操作即可。注意:为保证购书读者的权益,该操作会给出相关提示,要求输入提取码进行验证。

您还可以扫码右侧二维码, 关注【异步社区】微信公众号,回复“e54728”直接获取,同时可以获得异步社区15天VIP会员卡,近千本电子书免费畅读。

提交勘误

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,单击“提交勘误”,输入勘误信息,单击“提交”按钮即可(见右图)。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

扫码关注本书

扫描右侧二维码,您将会在异步社区微信服务号中看到本书信息及相关的服务提示。

与我们联系

我们的联系邮箱是szys@ptpress.com.cn。如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线提交投稿(直接访问www.epubit.com/contribute即可)。

如果您所在学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

关于异步社区和异步图书

“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。

“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近40年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。

异步社区

微信服务号

第1章 快速掌握Python必备基础

教学视频 10个 16分钟

1.1 安装Python

本节主要介绍如何在Windows和Linux中安装Python。

1.1.1 在Windows系统中安装Python

下面介绍在Windows环境中安装Python的方法。

进入Python官网,然后单击Downloads(下载)导航菜单,在下拉菜单中选择Windows,接着单击右侧的Python按钮 (本书中为Python 3.7.4),下载Python安装包,如图1-1所示。

图1-1

使用鼠标右键单击安装程序,选择以管理员身份运行安装包,单击Install Now按钮安装Python,如图1-2所示。安装界面如图1-3和图1-4所示。

图1-2

图1-3

图1-4

笔者有话说

选中Add Python 3.7 to PATH复选框是为了将Python解释器加入系统环境变量,以便在后续的Python开发中直接在“命令提示符”(业内称Windows命令行,后续均如此描述)中执行Python脚本。环境变量是系统运行环境的一系列参数,如这里的系统环境变量是PATH,PATH保存了与路径相关的参数,系统在路径查找中会对PATH保存的路径进行搜索。

测试Python是否安装成功。按Windows键(在部分键盘上为Win)并输入cmd,打开Windows命令行,输入python -V,命令行界面中会显示Python的版本信息,即表示安装成功,如图1-5所示。

图1-5

1.1.2 在Linux系统中安装Python

笔者的Linux系统版本是CentOS。Linux系统会默认安装Python,但版本为Python 2.7。下面以源码安装的形式来安装Python 3.7.4。

打开Python的源码包下载页面,选择Python 3.7.4,如图1-6所示。

图1-6

向下滑动页面,选择Gzip格式的Python源码压缩包,如图1-7所示。

图1-7

将Gzip压缩包下载到Linux系统,使用Linux的tar命令进行解压。笔者的压缩包文件为Python-3.7.4,解压的命令为tar -xvzf python-3.7.4。解压后的目录为Python-3.7.4,在终端中输入命令cd python-3.7.4,进入目录,如图1-8所示。

图1-8

笔者有话说

初学者需要在一定程度上熟悉Linux系统,即会使用常用命令。例如,ls命令其实是英文单词list的缩写,有“列出”的意思。如果想知道ls命令更多的含义及用法,可以查阅官方文档。

这里简单说明一下Linux中的configure与make命令。

configure是Linux中的脚本配置工具,主要用于对源码的当前安装环境进行检测,若检测无误,会在当前目录生成一个供源码编译的Makefile脚本文件。

make是Linux系统中的编译安装工具,主要用于解释执行Makefile文件中的脚本命令和编译命令。

在当前目录Python-3.7.4中执行./configure命令,输出内容如图1-9所示。

图1-9

笔者有话说

使用configure命令生成Makefile文件时,可以使用--prefix参数来指定Python的安装目录,语法形式为--prefix="安装目录的路径"。如果不指定这个参数,在Linux中默认安装路径为/usr/local。

configure命令执行结束后,会在当前目录中生成一个Makefile文件,输入make命令源码编译Python,如图1-10所示。

图1-10

编译成功后,执行sudo make install命令安装Python。若不指定安装目录,则默认安装目录为/usr/local,对应的Python解释器则安装于/usr/local/bin目录下。输入/usr/local/bin/python3.7 -V,输出结果如图1-11所示。

图1-11

为安装的Python设置软链接。Python可以以绝对路径的方式来执行,如第6步中的/usr/local/bin/python3.7,但每次输入一大段路径来执行Python显得太麻烦,这时可以考虑为安装的Python设置软链接(类似于Windows的快捷方式)。输入以下命令为Python设置软链接,其中,pip是Python的包管理工具,后续章节中会进行详细讲解。

执行下列命令给Python设置软链接:

ln -s /usr/local/python3/bin/python3.7   /usr/bin/python3

在In命令中,是将左边的路径设置为右边路径的软链接。/usr/bin目录已经添加至Linux的环境变量PATH中,所以执行python3相当于执行/usr/bin/python3。

pip是Python的包管理工具,执行下列命令为pip设置软链接。

ln -s /usr/local/python3/bin/pip3.7   /usr/bin/pip3

1.2 Python程序的编写与运行

现代计算机基于冯 ·诺依曼体系,由运算器、控制器、存储器、输入设备和输出设备五大部分组成,这是它的硬件组成部分。冯 ·诺依曼体系结构如图1-12所示。计算机使用者是不能直接操作这些硬件的,需要通过操作系统来访问这些硬件,操作系统是一种复杂的软件。

图1-12

Windows是大众熟知的计算机操作系统,平常使用的办公软件、浏览器和音/视频播放软件等都是运行在操作系统这个容器中的,而与硬件交互的工作都是由操作系统完成的。

总之,计算机系统由硬件和操作系统构成,在这两者的共同作用下,程序员编写的程序才得以在计算机中运行。下面主要介绍Python程序是如何在计算机中运行的。

笔者有话说

在本节的内容中,初学者只需大概了解Python程序在计算机中的运行过程即可,先建立一个整体的认识。这是一个很有效的学习方法。

1.2.1 磁盘文件helloworld.py

Python文件以.py作为扩展名。在计算机桌面上创建一个TXT文本文件,然后输入以下代码,编写完代码后,直接将文件名修改为helloworld.py。

# 以下代码必须顶格
print("hello world") 

文件helloworld.py是保存在磁盘中的文本文件,与用记事本创建的.txt文件并无本质区别。现代计算机基于冯 ·诺依曼体系,它只能理解二进制数据,Python程序代码是文本字符,是不能直接在计算机中运行的,所以需要借助某种翻译器,将Python源代码翻译成能被计算机理解的二进制指令。其中,安装的Python解释器就是一种程序源代码翻译器。

编程小知识

二进制数据是用0和1两个数码来表示的数,它的基数为2。现代计算机系统基于冯 ·诺依曼体系,使用的是二进制编码系统。

1.2.2 Python解释器

解释器(Interpreter)本质上是一种计算机程序,这类程序将程序员用编程语言编写的代码一行一行地翻译成字节码,字节码最终被翻译成机器指令,然后才能在计算机系统中运行。

解释器是逐行解释运行程序代码的,不会一次将整个程序转译,每次运行程序时都要先转成另一种语言再运行,因此解释器的程序运行速度比较缓慢。

这里以1.2.1小节中的Python代码来举例,其执行流程如下。

第1步: Python将代码print("hello world")转译成字节码。

第2步:将字节码载入内存。

第3步: Python逐条执行内存中的Python字节码。

笔者有话说

解释器的程序运行速度缓慢是相对于编译器来说的。编译器也是一种计算机程序。相比解释器的逐行运行,编译器有一个编译过程,通过这个编译过程,一次性将全部程序源代码转译成能被计算机执行的机器指令。Python是解释型语言,而C语言是广为开发者所知的编译型语言。

1.2.3 程序的字节码

字节码是Python程序的中间形式,一条Python语句会对应多条字节码指令。这里不细究字节码指令的具体形式,打一个简单的比方让初学者理解:假设print("hello world")被转译后的字节码指令为a,b,c,那么Python解释器会逐条执行a,b,c这些指令。

1.2.4 内存与CPU

helloworld.py程序是通过计算机中的输入设备(键盘)将代码逐行输入文件中的。在执行这个Python程序前,它被保存在硬盘中。读者已经知道,计算机由运算器、控制器、存储器、输入设备和输出设备组成,硬盘就是计算机的外存储器。有外存储器当然也有内存储器,常说的内存就是内存储器。

不论是解释器还是编译器,待执行的指令最终被载入计算机内存中。CPU通过控制器从内存中读取指令,再执行算术运算和逻辑运算。

编程小知识

内存:计算机中的程序都是在内存中运行的,内存也被称为内存储器或主存储器,其存储的是程序中的数据和指令。

CPU:中文释义为中央处理单元,是计算机的核心部件,负责执行计算机指令,主要由运算器和控制器构成。

1.2.5 输出到命令行

在执行完Python程序后,屏幕上会显示结果,如图1-13所示。CPU在执行完Python源程序转译后的机器指令以后,将存储在内存中的数据"hello world"字符串读取到CPU的寄存器中,再从寄存器中复制到输出设备(显示器),就能在屏幕上显示hello world的输出结果。

图1-13

编程小知识

寄存器是CPU的寄存器阵列,这些寄存器用于在内存与CPU之间暂存数据。

1.2.6 技术总结

本节主要包含以下6个重要的知识点,请读者多加巩固。

现代计算机基于冯 ·诺依曼体系,由运算器、控制器、存储器、输入设备和输出设备五大部分组成。

Python是一种解释型语言,Python解释器先将Python源程序转译成Python字节码,再逐行解释执行字节码指令。

计算机只能理解二进制数据,程序员编写的代码需要转译成二进制指令才能被执行。

硬盘是计算机的外存储器,存储了程序源代码;内存是计算机的内存储器,计算机中的程序都是在内存中运行的。

CPU是计算机的核心部件,主要由运算器和控制器构成,负责执行计算机指令。

CPU将内存中的数据复制到输出设备中,这样才能在显示器等终端设备中看到程序的输出结果。

1.3 代码中的注释

注释用于对某一段代码的含义或逻辑作文字性的描述。注释的内容会被编译器或解释器忽略。程序员在编写代码的过程中通常会写注释,目的是增强代码的可读性。

1.3.1 单行注释

Python规定使用字符#来表示单行注释。单行注释,顾名思义,只能用来注释一行。

# 这是Python中的单行注释,注释的内容会被解释器忽略

笔者有话说

程序员应该养成写注释的习惯。写注释可以增强代码的可读性,方便后期的软件维护。例如,编写完一个函数,一段时间后需要对这个函数进行功能上的修改,这就是维护。

1.3.2 多行注释

在Python中使用一对英文的三引号'''或"""来表示多行注释。多行注释,顾名思义,可以用来注释多行内容。

'''
这是Python中的多行注释,与单行
注释一样,注释的内容会被Python解释器忽略。
多行注释的内容必须在成对的三引号里面。
'''
"""
这也是多行注释 
"""

1.3.3 编码注释

初学者在编写Python代码时,喜欢用汉字来进行注释。在Python 2.x版本中,脚本文件的字符编码默认为ASCII码。如果在源程序中使用非ASCII字符来进行注释,Python解释器在解析时会抛出语法错误的异常信息。在Python 3.x版本之后,脚本文件的字符编码默认为UTF-8编码,可以直接使用汉字进行注释。

在文件头部加一行编码注释,Python解释器会按指定的编码方式对源程序进行解析。

编码注释有以下两种写法。

# coding=encoding_name
# -*- coding:encoding_name -*-

其中,encoding_name表示具体的编码字符集。例如,指定源程序的字符集为UTF-8编码,则写法如下。

# -*- coding:utf-8 -*-

编程小知识

对于Python 2.x版本,在对Python源程序指定UTF-8编码时,汉字能正常显示,初学者只需简单地在文件头加一行“# -*- coding:utf-8 -*-”即可。

1.3.4 技术总结

本节主要包含以下两个重要的知识点,请读者多加巩固。

注释用于对某一段代码的含义或逻辑作文字性的描述,注释的内容会被编译器或解释器忽略。在Python中使用#符号作单行注释,使用一对英文的三引号'''或"""作多行注释。

在文件头中进行编码注释,可以指定特定的编码。

1.4 Python中的字符串

字符串是由数字、下画线和字母等字符组成的一串字符,Python中的字符串必须由英文的引号括起来。这里的英文引号主要为单引号(')、双引号(")和三引号('''或""")。用单引号或双引号括起的是单行字符串,使用三引号可以定义多行字符串。

# 用单引号括起的单行字符串
'123abc'
# 用双引号括起的单行字符串
"123abc" 
 # 用三引号括起的多行字符串
"""
123
abc
"""

编程小知识

字符串在Python语言中是一种数据类型。对于名称、描述性的内容,都可以使用字符串。

1.5 变量

变量,顾名思义,是变化的量,它好比一个存放数据的容器,这个容器有特定的容量。变量变化的不是变量本身,而是这个容器中的数据。程序员可以用变量这个容器存放这段内存的数据,也可以存放那段内存的数据,至于能存放多大的数据,取决于这个容器的大小。

编程小知识

程序中的数据存放在内存中,内存的基本单位是字节。如某个变量的大小是4字节,那么这个容器最多只能存放4字节大小的数据。

在Python中使用赋值操作符“=”定义变量。Python中的变量是一个存放内存地址的容器,内存的地址对应的是数据在内存中的字节编号。为了引用这个变量,我们要为变量命名。Python是一种动态类型的脚本语言,在运行时才进行类型解析,变量的类型取决于变量所指向对象的类型。

① 定义字符串变量。

# 使用"="操作符来定义变量
name  = "张三" 
# 定义了一个字符串变量,变量名为name,以后使用这个变量时,通过变量名name来引用

② 定义整数类型的变量。

number  = 1314 

③ 定义浮点数类型的变量。

number  = 2019.1314

1.6 表达式

表达式表示一个求值的过程,它会产生一个值。例如,1+2就是一个表达式,它表达的是一个算术运算,结果为3。

表达式亦可由任意的单一表达式组合成复合表达式。例如,常见的数学运算表达式,可以用括号把每个子表达式括起来:1+(2+3)-(4-5)。

1.6.1 赋值表达式

使用“=”来直接定义变量,实际上使用的是赋值表达式(语句),“=”操作符在编程语言中常用作赋值运算符。

编程小知识

赋值的过程,即把“=”操作符右边的值赋给“=”操作符左边的变量。

1.6.2 输出表达式的值

print()是Python的内置函数,可以将表达式的值输出到终端。print()函数的基本语法如下。

print(value,sep='')

其中,value表示输出的值,sep表示输出的值之间的分隔符。可以同时输出多个表达式的值,值以逗号进行分隔。

实例代码
# 输出一个表达式的值
print(1+2)
# 输出多个表达式的值,并通过参数sep来指定分隔符
print(1+2,3*4,sep'#')

1.7 语句

语句是一个指令块,表示的是一段代码的执行过程。与表达式不同的是,语句通常是没有值的,而表达式一定会产生一个值。举个简单的例子:a = 1 + 2,这条语句表示将表达式1+2的结果赋值给变量a。

1.7.1 条件控制语句

在程序中,经常需要根据某种条件来对代码的执行过程进行控制。大多数编程语言提供了一些控制语句来实现这样的控制过程。

在Python中使用if关键字来定义条件控制语句。所谓条件控制,即当条件发生时,就执行相应的操作。例如,如果明天下雨,那么我会待在家里,否则我会出去爬山。这里,“明天下雨”是一个条件,“明天不下雨”也是一个条件,用编程语言来进行翻译,可以写出如下伪代码。

if  明天下雨:
        待在家里
else:
        出去爬山

编程小知识

伪代码,简言之即不能运行的代码,常以自然语言等来描述编程语言中的逻辑过程。

以上伪代码中的else语句表示“否则”的意思,它表达的是“明天不下雨”这个条件。另外,可以同时设立很多条件:如果明天下雨或者刮大风,那么我会待在家里,否则我会出去爬山。

if  明天下雨 or 刮大风:
        待在家里
else:
        出去爬山

以上伪代码中的or是逻辑运算操作符,用来连接多个条件,表示多个条件中只要其中一个为真即可。逻辑运算符and表示多个条件中,所有条件必须同时满足。

下面继续添加条件:如果明天下雨或者刮大风,那么我会待在家里;如果明天既不下雨又不刮大风,但是气温很高,那么我会去维多利广场购物;否则我会去爬山。

if  明天下雨 or 刮大风:
        待在家里
elif  明天气温很高:
        去维多利广场购物
else:
        出去爬山

以上伪代码中的 elif 是else if的简写,表示“否则,如果”的意思,elif 表达的是在if中的条件不满足的情况下,再根据 elif 的条件进行判断,如果条件满足就执行相应的操作。

在Python中通过elif来表达分支条件时,必须先有if才能有elif,这也是符合现实生活中的语义的。不管是if 还是elif,它们后面的表达式必须能转换为逻辑上的真或假,Python解释器根据表达式的值来判断条件的真假,条件为真就执行相应的指令,条件为假则继续判断其他的条件分支。

Python中的关键字True用来表示条件中的真值,False表示条件中的假值。False等价于数学中的0值,True是非0值。表达式的值如果为0或空值,那么表达式的值就是False,否则就是True。

编程实例:判断计算表达式

实例代码
# 定义a变量
a = 1
# 定义b变量
b = 2
if a+b < 0:
    """
    (1)下面的代码与首行保持缩进,程序中的缩进空格数保持统一
    (2)在1.11节会对Python代码的缩进进行讲解
    """
    print("a+b < 0")
elif a+b < 3:
    # 注意代码缩进
    print("a+b < 3") 
else: 
    # 注意代码缩进
    print("a+b >=3")
代码解析

“<”是关系运算符,表示逻辑上的小于,print()是Python中的内置函数,将内容输出到终端。代码中定义了变量a的值为1,变量b的值为2。

Python解释器在执行以上代码时,主要做了以下4步操作。

(1)计算表达式a+b的值,a+b的值等于3。

(2)计算表达式3<0的值,值为假,故不会执行a+b<0下面的代码。

(3)继续判断分支条件elif中的表达式3<3的值,值为假,同样不会执行a+b<3下面的代码。

(4) else语句表示除上述条件之外的条件:a+b不小于0、不小于3,那a+b的值一定是大于或等于3的,故程序会执行else语句下的代码,即print("a+b >= 3")。

1.7.2 循环控制语句

循环结构从字面上来理解,是重复运动的结构。昼夜交替是一种循环结构:从白天到晚上,再从晚上到白天,如此周而复始,生生不息。

编程中的循环结构,即重复执行某一段代码的程序结构。在Python中使用while或for关键字来定义循环控制结构。while结构同if结构一样,后面接表达式,表达式的值如果为真,则会一直执行while结构中的代码。

本节以while做实例演示,伪代码如下。

while True:
     "我爱Python"   

在该例子中,程序会不断输出while 结构中的“我爱Python”。通过Python中的关键字break可以退出循环结构。

while True:
    # 代码与首行保持缩进
    "我爱Python"
    break 

添加break语句后,输出一次“我爱Python”,就退出了循环。

编程实例:判断计算结果

实例代码
a = 1
b = 2
while a+b < 0: 
    # 代码与首行保持缩进
    print("a+b < 0") 
print("a + b > 0")
代码解析

在这段代码中,定义了变量a的值为1,变量b的值为2。Python解释器在执行以上代码时主要做了以下3步操作。

(1)计算表达式a+b的值,a+b的值等于3。

(2)计算表达式3 < 0的值,值为假,故不会循环执行while结构下面的代码:print("a+b < 0")。

(3) Python解释器最终执行的代码是print("a +b > 0")。

1.7.3 空语句

在Python中用pass 来表示空语句。空语句,顾名思义,即不包含任何语句。使用空语句是为了保持程序结构的完整性,起占位符的作用。

1.7.4 课后习题

请读者完成以下4题。

(1)定义一个字符串变量,然后判断这个字符串值的真假。如何定义一个输出值为假的字符串?

(2)定义一个输出值非0的表达式。

(3)将描述“如果明天天气好并且我有空,那我就去爬山,否则,我得忙工作的事”转换成if语句的伪代码描述。

(4)将描述“如果学好了Python,那我会一直从事Python的开发工作”转换成while语句的伪代码描述。

1.8 函数

函数就是一个代码块,也是一个语句块。为了引用变量,需要为变量命名,同样,为了引用这个代码块,也需要对这个代码块进行命名。这里的命名可以理解为函数名。

可以将函数类比为一个从输入到输出的转换器,函数的输入对应的是传递给函数的参数,在函数头中定义参数。而定义从输入到输出的转换逻辑要在函数体中进行。函数的基本属性为函数名、函数头和函数体。

笔者有话说

Python提供了匿名函数。所谓的匿名函数,指的是无函数名的代码块,通常为了引用这个代码块,需将匿名函数赋值给变量,再通过这个变量来执行这个匿名函数。

1.8.1 使用def定义函数

使用def定义函数的语法如下。

def  函数名(参数列表): 
   函数体  
   return 返回值

参数列表指的是包含多个参数名的列表,参数之间以逗号进行分隔,如参数1,参数2,参数3。参数列表可以为空,表示不需要传递任何参数。

函数体中的return是返回的意思,表示返回值给函数的调用方。return语句不是必需的,定义函数时,可以不用返回值给调用方。

下面根据Python函数的定义语法,定义一个输入值为整数、输出值为输入值2倍的函数。

def double(number): 
        # 代码需保持空格缩进
        return number * 2 

在该函数定义中,函数名为double,参数为number,返回值为number的2倍。例如:

result = double(2) 

程序运行结果为4。double(2)表示执行这个函数,2是实际传的参数,对应于函数定义时的参数number。

1.8.2 Python中的冒号

在使用条件控制语句、循环控制语句,以及定义函数时,语句后面必须加上一个英文的冒号(:),否则程序会出现语法错误的异常信息。

正确的条件控制结构
if True:
    pass
else:
    pass
错误的条件控制结构
if True
    pass
else
    pass
正确的循环控制结构
while True:
    pass
错误的循环控制结构
while True
    pass
正确的函数定义
def function_name():
    pass
错误的函数定义
def function_name()
    pass

1.8.3 课后习题

(1)定义一个函数,此函数有两个参数,返回值为参数之和。

(2)定义一个函数,此函数有一个参数,在函数中判断参数的真假情况,如果参数值为真就返回1,否则返回0。

(3)定义一个函数,此函数带两个参数,假设分别为a、b,在函数中判断a与b的大小,并返回较大的那个。提示:“>”是Python中的关系运算符,关系运算符左边的操作数称为左操作数,右边的称为右操作数。使用“>”操作符,可以判断左操作数是否大于右操作数。

1.9 Python中的类与对象

类是面向对象程序设计中的概念,也是一种抽象的数据类型。程序员可以通过类自定义数据类型。对数据类型进行抽象是指对该数据类型的共有属性和行为进行概括。

1.9.1 定义一个类

在Python中使用class关键字来定义一个类,基本语法如下。

class class_name:
       def __init__(self):
               pass

class_name表示定义的类名,即为定义的数据类型取一个名称,class class_name下面的为类体,在类体中可以定义该数据类型的属性和操作方法。类体中的__init__()函数表示该类的初始化函数,对类进行实例化时,Python会自动执行该初始化函数。实例化是指获取该数据类型的一个具体实例,该具体实例称为类的对象。

__init__()方法中的self参数是必需的,表示实例化后的对象。为对象添加属性使用“self.属性名”的语法,例如添一个name属性,属性值为Backer:self.name = "Backer"。

下面定义一个学生类,表示学生这种数据类型,在学生类的初始化函数中指定一个name参数,表示学生的姓名;在学生类中定义一个study()方法,表示该学生类型的学习行为,方法中的self参数是必需的,表示实例化后的对象。在方法中可以通过self来引用对象的属性。

实例代码
class Student:
       def __init__(self, name):
           self.name = name
       def study(self, course):
           print(self.name, "study", course)

对类进行实例化类似于函数调用,使用“类名()”的形式来进行实例化,()中需传递初始化函数__init__()中的参数(self除外),访问对象的属性或方法使用“对象名.”进行访问。

对类进行实例化
class Student:
       def __init__(self, name):
           self.name = name
 
# 对Student类进行实例化
student = Student("Backer")
# 使用“对象名.”来访问student对象的name属性
print(student.name)
# 使用“对象名.”来访问student对象的study()方法
student.study("English")
程序输出
Backer
Backer study English

1.9.2 技术总结

本节主要包含以下3个重要的知识点,请读者多加巩固。

类是一种抽象的数据类型,通过类,程序员可以自定义数据类型。

类中的__init__()方法为类的初始化函数,对类进行实例化时,Python会自动调用该构造函数。

Python中的self表示类实例化后的对象。

1.9.3 课后习题

(1) 什么是类?什么是抽象?

(2) 定义一个Student类,在__init__()中分别指定name和age参数,将其设置为对象的属性。

(3) 在第(2)题的基础上,在Student类中定义一个output()函数,然后将name与age输出。提示:在构造函数中定义的属性,在类体中的方法中可以通过self来进行引用。

1.10 Python中的关键字

关键字亦称保留字,按保留字的字面意思来解释可能更容易理解——保留字就是保留给Python用的关键字。Python也是程序员编写的软件,编写者已经预先使用这些关键字作其他用途了,如果程序员再使用这些关键字,可能会产生冲突。图1-14所示为Python 3.7的预定义关键字。

图1-14

在定义变量名、函数名和类名等时,应当避免使用Python中的关键字来进行命名,否则Python解释器会抛出语法错误的异常。

1.11 Python中的代码缩进

Python是一门既有趣又易学的语言,学会Python可以做许多有趣的事。例如,写个爬虫程序爬取短视频应用程序中的短视频。Python的语法简单,学习梯度较平,对编程初学者很友好,但Python也并非完全没有缺点。

Python是一种解释型语言,相对于C/C++等编译型语言来说,运行较慢。此外,Python对代码采取的强制性缩进规则,对于部分初学者来说是比较严格的。初学者在掌握Python的代码缩进规则之前,很容易导致IndentationError异常,从而不知所措。

实例代码
# __date__ = "2019-09-02"
name="张三"
def  main(): 
        print("hello") 
                print("world") 
main() 

在执行这段程序时,Python会抛出一个IndentationError异常。

笔者有话说

按照如下步骤操作可重现IndentationError异常。

(1)在D盘创建main.py文件,并将上述代码写到文件中。

(2)按Windows键,输入cmd命令,进入Windows命令行,在命令行中输入d:,按回车键进入D盘,然后在命令行中输入python main.py。

1.11.1 Python代码缩进规则

Python对代码采取了强制性的缩进,程序员在写Python程序时必须按照其缩进规则来编写代码,否则程序在运行时会报错,抛出IndentationError的错误异常。以下是Python中的代码缩进规则。

(1)缩进必须有空格。

(2)全局对象或全局语句中的首行没有缩进,必须顶格。

(3)同一层次的语句须缩进相同的空格数。

(4)子级层次的语句与父级层次的语句必须有缩进。

(5)单行注释可以随意缩进,多行注释与同层次的代码缩进相同。

下面通过实例代码来加深对Python代码缩进规则的记忆和理解。

          # __date__ = "2019-05-08"        # 单行注释可随意缩进
GREETINGS = "hello world"             # 定义了一个全局变量,必须顶格
 
def main():                                         # 在Python中使用def来定义函数
                """
                (1)多行注释与同层次的代码保持相同的缩进
                (2)与下方执行print()函数的代码处于同一层级
                """
                 print("hello world")          # 与def语句是子级与父级的关系,必须进行缩进
                 print(GREETINGS)            # 与上行中的print()是同级关系,缩进相同的空格数
                 if 0 == 0:
                       # print("0-0")与上行中的if语句是子级与父级的关系,必须进行缩进
                       print("0-0")
 
main()                                                 # 必须顶格

需要注意的是,在Python开发者社区中,通常按照4个空格来缩进。

笔者有话说

键盘上的Tab键输出的是空白字符,它在计算机系统中的编码与空格的编码是不一样的,一些集成开发环境(IDE)或编辑器自动将Tab键的输出转化为4个或8个空格,读者在使用集成开发环境时可能需要进行额外配置,否则会带来移植上的问题。最佳的做法是在需要缩进的地方只用空格键来输入空格,这样就不会出错。

1.11.2 代码强制性缩进的意义

Python通过代码缩进来规范代码的书写格式,区分代码的逻辑层次。在适应并熟悉了Python的代码缩进规则以后,程序员写的代码会变得整齐美观。

切记,编写Python程序必须遵守其代码缩进规则,否则其会抛出IndentationError异常。

1.12 初识Python模块

学习是有梯度的。在初学编程时务必先建立对编程概念的感性认识,不要把过多的时间虚耗在对复杂概念的抽象理解上。所谓感性认识,就是依托于你的想象力,把生活中的经验与编程概念结合起来。

先建立起对编程的感性认识,能激发出对学习的兴趣,而后再逐步加深对概念的理解。

学习是一个渐进的过程,也是一个重复的过程。这本节中,笔者从生活中的例子出发来讲解Python中的模块。

1.12.1 Python中的模块

用文本编辑器打开一个Python文件,常会在文件头部看到这样几行代码:

import module1
import module2

import单词有“导入”的含义,而位于其右侧的正是Python中的“模块”,“import+空格+模块名”意为从当前源文件中导入某个模块。模块的英语单词是module,对于初学者来说模块这一概念可能有点抽象。

编程中的许多概念都源于生活经验,模块亦然。以手机为例,摄像头是它的一个组件,按键也是它的一个组件,各种基础组件共同组装成一部手机,这里的手机组件即模块,如图1-15所示。

图1-15

在Python中,读者可以把要实现的一系列功能通过变量、函数和类等工具写成一个模块。关于变量、函数和类等,在后续的章节中会进行详细讲解,这里只需要知道有这些概念即可。

模块可以重复使用,这是它的一个很重要的意义。再次以手机为例,手机的按键或其他部件如果损坏了,我们可以换个新的部件继续使用。

Python程序员会把模块写到文件中,Python文件以.py为扩展名,但.py对Python来说并不是必需的(这里不过多地阐述这类逻辑概念),.py对于用户的意义就是当人们看到以.py为扩展名的文件时会想到这是Python文件。

笔者有话说

本书的第16章有关于模块的进一步描述,笔者会一步一步地教读者实现一个自定义的模块。本节只起一个引领的作用,让读者对模块有一个直观的印象。

1.12.2 Python模块导入的基本语法

在当前的Python文件中,如果需要使用其他模块的功能,需要进行模块的导入。在Python中使用import语句来实现模块的导入。导入模块主要有以下3种形式。

一次性导入整个模块:import 模块名

os是Python中的内置模块,如需一次性导入整个os模块,可以采用以下语法:

import os

导入模块下的子模块:from 模块名 import 子模块名

例如,path是os模块下的子模块,如需导入path模块,可以采用以下语法:

from os import path

split 是path模块下的一个方法模块,如只需导入split模块,可使用成员操作符“.”来导入。

from os.path import split

from os.path import split表示从os模块中的path模块中导入split模块。

为导入的模块取一个别名

使用as关键字可以为导入的模块取别名。继续以os模块为例,为导入的os模块取别名Windows,代码如下。

import os as Windows

为os模块下的path取别名Windows_path,代码如下。

from os import path as Windows_path

1.12.3 Python的内置模块

在安装Python时,会同时安装一系列基础模块。Python的内置模块是为节省开发者时间而预先编写的一系列基础组件。当开发者需要使用某个内置模块时,直接使用“import ”导入相应模块即可。

1.12.4 Python中的模块查找

Python默认会在当前目录中进行模块查找,如果找不到,会在指定路径中进行模块的查找,通过PYTHONPATH环境变量可配置模块的查找路径。所有的模块查找路径都保存在sys模块的path属性中。

1.12.5 技术总结

本节主要包含以下4个重要的知识点,请读者加以巩固。

使用“import 模块名”的语法来导入一个模块。

模块的一个很重要的意义在于它可以被重复使用,也就是所谓“复用”。

Python文件常以.py为扩展名,我们通过函数、类等工具将要实现的功能以模块的形式写到Python文件。

Python的环境变量为PYTHONPATH。

1.12.6 课后习题

(1)谈谈你对模块的理解。

(2) Python中的内置模块sys有一个getsizeof()方法,请你写一行代码,只导出sys模块下的getsizeof()方法。

(3)写一行代码,为os.path模块下的getsize()方法取一个别名。

(4)查找相关资料,然后描述os模块与sys模块的功能。

1.13 程序实战:你好世界

不少打算从事程序开发的人找不到入门之法,所谓难者不会,概因找不到好老师细心教你。在写出第1个Python程序hello world之前,读者必须按照1.1节中的内容对Python解释器进行安装。这里以Windows环境来进行程序的编写。

1.13.1 第1个Python程序

第1个Python程序为向屏幕输出字符串"hello world",程序代码如下。

# __author__ = 薯条老师 
 
def main():
       print("hello world")
if __name__ == "__main__": 
      main()

1.13.2 选择一个代码编辑器

编写程序之前,得有个代码编辑器。常用的编辑器主要有Notepad++和PyCharm,前者是一款轻量工具,后者是一款IDE工具,包含了更加丰富的功能,稍显笨重。下面分别教大家下载和安装Notepad++和PyCharm。

Notepad++

Notepad++是 Windows操作系统下的一个文本编辑器,有完整的中文版界面。Notepad++支持语法高亮显示,不仅可以用来制作一般的纯文字说明文件,还十分适合编写计算机程序代码。读者可到Notepad++官方网站的下载页面中下载该编辑器,下载后直接双击文件安装即可。Notepad++界面如图1-16所示。

图1-16

社区版PyCharm

PyCharm是专为Python开发的IDE工具,提供了诸多功能,以帮助程序员提升开发效率,如调试、语法高亮、代码跳转、自动完成、智能提示等。PyCharm分为商业版和社区版,商业版是收费的,社区版面向Python社区的学习人员,其提供的功能与商业版并无太大区别。一般来说,社区版即可满足程序员的开发需求。

读者可到JetBrains公司的官方网站下载PyCharm。单击Community下的DOWNLOAD按钮即可下载社区版PyCharm,如图1-17所示。下载完毕后,双击安装即可。PyCharm界面如图1-18所示。

图1-17

图1-18

1.13.3 运行程序

从一开始学编程时,就得有一个目录组织的概念。清晰的目录结构有助于对项目的整体维护,这是作为一个程序员最基本的素养,读者须谨记在心。

(1)在D盘创建python-learning目录,打开这个目录,创建chapter1目录,然后在chapter1目录中创建一个名为 helloworld.py 的文件,如图1-19所示。

图1-19

(2)双击打开helloworld.py文件,原样输入以下代码,红色箭头处示意必须有空格缩进(一般缩进4个空格),如图1-20所示。

图1-20

实例代码
# __author__ = 薯条老师
 
def main():
       print("hello world")
if __name__ == "__main__": 
       main()

笔者有话说

注意,代码中的__name__和__main__两侧是两根下画线。写完这个程序后,想让它运行,务必按照以下步骤来执行这个Python程序。

(1)按Windows键,输入cmd命令,按回车键,进入Windows的命令行界面。

(2)输入d: 再按回车键,以切换到D盘。

(3)输入cd python-learning,进入创建的python-learning目录。

(4)在python-learning目录中执行python helloworld.py命令。

按照以上4步操作以后,若看到hello world输出在终端,则表示程序执行成功。笔者会在1.13.4小节对程序源代码进行逐行解释。

编程小知识

Windows系统使用盘符来对磁盘进行标识,如C盘的盘符C:、D盘的盘符D:。要在命令行中进行磁盘的切换,可直接输入对应的盘符,然后按回车键,例如,从C盘切换到D盘,命令为d:。在磁盘内部进行切换使用cd命令加对应的路径,例如,在D盘中切换到python-learning目录,命令为cd python-learning。

1.13.4 代码逐行讲解

下面用代码编辑器打开上一小节创建的helloworld.py,并对代码进行逐行讲解。

# __author__ = 薯条老师 

这里的#字符在Python中是用来作注释的,是单行注释,多行注释使用3个英文的单引号'或双引号"将待注释的内容括起来,举例如下。

 # 单行注释
'''  
  多行
注释
''' 
 
""" 
  多行
注释
"""

注释的内容会被Python解释器忽略。有良好编程习惯的程序员通常都会写注释,加注释是为了提供一些代码之外的信息,其他人通过这些信息可以知道程序的编写日期、程序的作者、函数的功能、复杂的逻辑描述,等等。

当解释器读到注释字符时, 会略过接下来的内容,直到读到下一个注释字符为止,也就是说解释器只翻译除注释之外的内容。

实例代码
def main():
    print("hello world")

此处的def实为英语单词define的简写,define有“下定义,规定”的意思,是一个动词,在Python中使用def来定义函数。函数包含函数头和函数体,函数头又包含函数名和参数列表,函数体是用来实现函数功能的代码块。

知识超链接

对函数定义还不是很熟悉的读者,可以复习1.5~1.8节中的变量、表达式、语句和函数等内容。

在我们定义的这个函数中,函数名为main,函数体中执行了内置的print()函数,读者可以将main自行改写为其他函数名来进行测试。

print()是Python的内置函数。所谓内置函数,就是在Python中预先写好的函数,可直接调用。print("hello world") 语句的功能即为执行print()函数,将hello world输出到屏幕上。

我们也可以将数字或其他数据类型输出到屏幕上,如 print(666)、print(2019.888) 等,读者可以自行改写 helloworld.py文件,然后测试输出其他类型的数据。

笔者会在后面对函数单独进行讲解,初学者需要做的是按照书中的内容反复练习,直到熟练为止,如果没有达到熟练的程度,那就不要开始学习下一节内容。

实例代码
if  __name__ == "__main__":
      main() 
 
""" 
注意:__name__ 与 __main__前后都是双下画线
""" 

__name__是Python中的一个系统变量,保存了当前模块的完整名称,“==”是逻辑运算符,用于判断两侧的量是否相等。

这一段代码在逻辑上表示如果系统变量__name__的值等于"__main__",就执行main()这个函数。

main()函数已经在前面定义过,这个函数的函数体为执行print()函数,给print()函数传递"hello world"字符串参数,print()函数会把 hello world输出到屏幕上。

能否不加 if__name__ == "__main__":呢?

答案是肯定的,读者可以自行将这一行删掉,再将main()左移到行首。1.12节中已对模块进行简单介绍,在Python中每个.py文件都可以作为一个模块,请读者牢记以下知识点。

如果当前模块是直接执行的,__name__的值就为"__main__";如果当前模块被导入其他模块,__name__的值就为模块名字,模块名字是创建的文件名(不包含.py)。

1.13.5 课后习题

(1)尝试改写main()函数名为其他的函数名。

(2)改写helloworld.py,输出10个阿拉伯数字到屏幕上。

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e54728”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。

第2章 神奇的Python交互模式

教学视频 1个 2分钟

2.1 三言两语说交互

交互即互动。举一个浅显的例子:在社交软件里给人发消息,对方收到消息后回复消息,以作出相应的反馈,这就是所谓互动。

互动不只是人与人之间的交流、沟通,人与机器之间也能产生互动。例如,计算机向用户提供一个交互接口或界面,使得用户与计算机之间可以产生互动。用户打开浏览器上网,在搜索引擎中输入一个关键词并按回车键,网页上呈现的内容就是计算机程序给人提供的反馈信息。

常见的人与机器的互动还有在ATM机中取款,或者在苹果手机上召唤智能语音助手Siri,等等。

2.2 神奇的Python交互模式

本节主要介绍Python交互模式的使用方法和相关代码编写模式。

2.2.1 进入交互模式

Python中的交互模式本质上是一个命令行程序,它向程序员提供了一个交互界面,程序员可以在这个界面里做许多神奇的事,例如在10秒内快速打印九九乘法表。读者按照以下几个步骤操作,即可进入Python的交互模式,如图2-1所示。

图2-1

按Windows键,输入cmd, 按回车键,进入Windows的命令行界面。

在命令行中输入python,然后按回车键进入Python的交互模式。

输入"你好,世界" ,然后按回车键,可以看到图2-2所示的输出结果。

图2-2

图2-2中的“你好,世界”就是Python解释器对输入做出的反馈,当用户按回车键后,Python会对输入的内容进行解析,只要输入的内容符合Python语法,Python就会解析、执行,得到相应的输出。

笔者有话说

笔者输入的用双引号括起来的是Python中的字符串类型,读者可以尝试将双引号去掉,看看Python会给你什么样的反馈。字符串类型是Python的内置类型,更多与数据类型相关的介绍会在后续的内容中逐渐展开。

2.2.2 在交互模式执行算术运算

可以直接在交互模式中执行算术运算,这里先简单介绍一下Python中常用的算术运算符+、-、*、和/,分别对应于数学上的加、减、乘和除。图2-3所示为在交互模式中进行1+1、1*1、 1-1和1/1的算术运算。以此类推,读者可以在交互模式中尝试其他的算术运算。

图2-3

2.2.3 在交互模式中执行函数调用

在交互模式中能直接调用函数,以内置函数print()为例,如图2-4所示。

图2-4

读者可以惊奇地发现直接在交互模式中输入"你好,世界"与用print()函数打印的“你好,世界”十分相似,唯一的不同点在于print()打印的内容没有引号。有没有引号对于用户来说并没有区别,对程序员来说,带引号的输出表示字符串类型。

编程实例: 在10秒内快速打印九九乘法表

下面使用Python中的for循环语句打印九九乘法表。

实例代码
for i in range(1, 10):
      for j in range(i): 
               j += 1 
      print('%d*%d=%-3d'% (i, j, i*j), end=' ') 
      print(' ')

将这段代码输到Python的交互模式中,如图2-5所示。在输入的过程中,须注意Python中的代码缩进。

图2-5

输入完毕后按回车键,即可看到图2-6所示的九九乘法表。

图2-6

2.3 在交互模式使用help()函数

Python中的交互模式提供了方便的查找功能,通过内置函数help(),可以查阅函数、模块、类型和属性等的详细信息。

2.3.1 help()函数的用法

在执行help()函数进行特定的查找时,需要给help()函数传递参数。参数传递有两种形式:字符串类型和参数对象名。语法形式为help(字符串类型参数)或help(对象名)。

字符串类型参数通常是Python中预定义的关键字、属性名和模块名等;对象名参数可以是Python中内置的全局变量、函数名和已导入的模块名, 也可以是用户自定义的对象名(变量名、函数名等)。

笔者有话说

在交互模式中直接执行help(),不传递任何参数时,会进入help模式,此时直接输入待查阅的属性名或对象名,即可执行相应的查阅。在help模式中执行quit命令可退出help模式。

2.3.2 查看Python中的关键字

在交互模式中输入help("keywords"),可以输出Python中预定义的关键字,如图2-7所示。

图2-7

以Python中的关键字False为例,使用help查看关于False关键字的详细描述。在交互模式中输入help("False"),可以看到图2-8所示的输出结果。

图2-8

help输出的内容若超出当前的页面,可在页面底部看到一行-- More --的提示,表示还有更多内容,读者可以按回车键以查阅更多内容,或输入q退出当前的help视图。

2.3.3 查看Python中的内置对象

以内置函数print()为例,print对应的是该函数的名字,直接在交互模式中输入help(print),即可查看该函数的信息,如图2-9所示。

图2-9

2.4 向交互模式说再见

随着后续内容的慢慢展开,读者可以看到在交互模式中更多有意思的操作,现在需要好好消化目前的学习内容。

到了对交互模式说再见的时候了,在交互模式中执行exit()或quit()函数可以退出交互模式,返回到Windows的命令行。

2.5 技术总结

本章内容比较简单,请读者掌握以下3个重要的知识点。

交互即互动,人与机器可以产生互动。

在Python的交互模式中可以进行算术运算等复杂操作。

执行exit()或quit()函数可退出Python的交互模式。

2.6 课后习题

(1)在交互模式中计算今年是否闰年,先用文字描述算法过程,再尝试以Python代码的形式写到交互模式中。

(2)进入help模式,查阅Python内置模块os的用法。提示:在Python中导入模块可以使用“import 模块名”指令,如导入os模块的指令为import os。

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e54728”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。

相关图书

深度学习的数学——使用Python语言
深度学习的数学——使用Python语言
动手学自然语言处理
动手学自然语言处理
Web应用安全
Web应用安全
Python高性能编程(第2版)
Python高性能编程(第2版)
图像处理与计算机视觉实践——基于OpenCV和Python
图像处理与计算机视觉实践——基于OpenCV和Python
Python数据科学实战
Python数据科学实战

相关文章

相关课程