书名: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变量,可变量到底是什么,问其本质,却鲜有初学者答得出。
许多初学者在学习过程中往往追求速度,恨不得三五天内学完本书全部内容,结果是欲速则不达,最后学得零零散散,不甚系统,近乎什么都没学会。大部分初学者之所以迷茫,概因基础不牢。基础若不牢,何以构建知识的高楼大厦?所以长时间困在原地,止步不前!
不只初学者,不少工作几年的程序员也有同样的困扰:学着学着就迷茫了,工作好几年后突然意识到只能做一些低阶的开发工作,不知道接下来该做什么,亦不知该如何进一步提高个人水平。因此,在学习的时候,切忌急功近利,一定要打下扎实的基础,再开始下一个环节的学习。下面介绍打好基础的方法。
(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、测试、前端、网络技术等。
异步社区
微信服务号
教学视频 10个 16分钟
本节主要介绍如何在Windows和Linux中安装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
笔者的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-12所示。计算机使用者是不能直接操作这些硬件的,需要通过操作系统来访问这些硬件,操作系统是一种复杂的软件。
图1-12
Windows是大众熟知的计算机操作系统,平常使用的办公软件、浏览器和音/视频播放软件等都是运行在操作系统这个容器中的,而与硬件交互的工作都是由操作系统完成的。
总之,计算机系统由硬件和操作系统构成,在这两者的共同作用下,程序员编写的程序才得以在计算机中运行。下面主要介绍Python程序是如何在计算机中运行的。
笔者有话说
在本节的内容中,初学者只需大概了解Python程序在计算机中的运行过程即可,先建立一个整体的认识。这是一个很有效的学习方法。
Python文件以.py作为扩展名。在计算机桌面上创建一个TXT文本文件,然后输入以下代码,编写完代码后,直接将文件名修改为helloworld.py。
# 以下代码必须顶格
print("hello world")
文件helloworld.py是保存在磁盘中的文本文件,与用记事本创建的.txt文件并无本质区别。现代计算机基于冯 ·诺依曼体系,它只能理解二进制数据,Python程序代码是文本字符,是不能直接在计算机中运行的,所以需要借助某种翻译器,将Python源代码翻译成能被计算机理解的二进制指令。其中,安装的Python解释器就是一种程序源代码翻译器。
编程小知识
二进制数据是用0和1两个数码来表示的数,它的基数为2。现代计算机系统基于冯 ·诺依曼体系,使用的是二进制编码系统。
解释器(Interpreter)本质上是一种计算机程序,这类程序将程序员用编程语言编写的代码一行一行地翻译成字节码,字节码最终被翻译成机器指令,然后才能在计算机系统中运行。
解释器是逐行解释运行程序代码的,不会一次将整个程序转译,每次运行程序时都要先转成另一种语言再运行,因此解释器的程序运行速度比较缓慢。
这里以1.2.1小节中的Python代码来举例,其执行流程如下。
第1步: Python将代码print("hello world")转译成字节码。
第2步:将字节码载入内存。
第3步: Python逐条执行内存中的Python字节码。
笔者有话说
解释器的程序运行速度缓慢是相对于编译器来说的。编译器也是一种计算机程序。相比解释器的逐行运行,编译器有一个编译过程,通过这个编译过程,一次性将全部程序源代码转译成能被计算机执行的机器指令。Python是解释型语言,而C语言是广为开发者所知的编译型语言。
字节码是Python程序的中间形式,一条Python语句会对应多条字节码指令。这里不细究字节码指令的具体形式,打一个简单的比方让初学者理解:假设print("hello world")被转译后的字节码指令为a,b,c,那么Python解释器会逐条执行a,b,c这些指令。
helloworld.py程序是通过计算机中的输入设备(键盘)将代码逐行输入文件中的。在执行这个Python程序前,它被保存在硬盘中。读者已经知道,计算机由运算器、控制器、存储器、输入设备和输出设备组成,硬盘就是计算机的外存储器。有外存储器当然也有内存储器,常说的内存就是内存储器。
不论是解释器还是编译器,待执行的指令最终被载入计算机内存中。CPU通过控制器从内存中读取指令,再执行算术运算和逻辑运算。
编程小知识
内存:计算机中的程序都是在内存中运行的,内存也被称为内存储器或主存储器,其存储的是程序中的数据和指令。
CPU:中文释义为中央处理单元,是计算机的核心部件,负责执行计算机指令,主要由运算器和控制器构成。
在执行完Python程序后,屏幕上会显示结果,如图1-13所示。CPU在执行完Python源程序转译后的机器指令以后,将存储在内存中的数据"hello world"字符串读取到CPU的寄存器中,再从寄存器中复制到输出设备(显示器),就能在屏幕上显示hello world的输出结果。
图1-13
编程小知识
寄存器是CPU的寄存器阵列,这些寄存器用于在内存与CPU之间暂存数据。
本节主要包含以下6个重要的知识点,请读者多加巩固。
① 现代计算机基于冯 ·诺依曼体系,由运算器、控制器、存储器、输入设备和输出设备五大部分组成。
② Python是一种解释型语言,Python解释器先将Python源程序转译成Python字节码,再逐行解释执行字节码指令。
③ 计算机只能理解二进制数据,程序员编写的代码需要转译成二进制指令才能被执行。
④ 硬盘是计算机的外存储器,存储了程序源代码;内存是计算机的内存储器,计算机中的程序都是在内存中运行的。
⑤ CPU是计算机的核心部件,主要由运算器和控制器构成,负责执行计算机指令。
⑥ CPU将内存中的数据复制到输出设备中,这样才能在显示器等终端设备中看到程序的输出结果。
注释用于对某一段代码的含义或逻辑作文字性的描述。注释的内容会被编译器或解释器忽略。程序员在编写代码的过程中通常会写注释,目的是增强代码的可读性。
Python规定使用字符#来表示单行注释。单行注释,顾名思义,只能用来注释一行。
# 这是Python中的单行注释,注释的内容会被解释器忽略
笔者有话说
程序员应该养成写注释的习惯。写注释可以增强代码的可读性,方便后期的软件维护。例如,编写完一个函数,一段时间后需要对这个函数进行功能上的修改,这就是维护。
在Python中使用一对英文的三引号'''或"""来表示多行注释。多行注释,顾名思义,可以用来注释多行内容。
'''
这是Python中的多行注释,与单行
注释一样,注释的内容会被Python解释器忽略。
多行注释的内容必须在成对的三引号里面。
'''
"""
这也是多行注释
"""
初学者在编写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 -*-”即可。
本节主要包含以下两个重要的知识点,请读者多加巩固。
① 注释用于对某一段代码的含义或逻辑作文字性的描述,注释的内容会被编译器或解释器忽略。在Python中使用#符号作单行注释,使用一对英文的三引号'''或"""作多行注释。
② 在文件头中进行编码注释,可以指定特定的编码。
字符串是由数字、下画线和字母等字符组成的一串字符,Python中的字符串必须由英文的引号括起来。这里的英文引号主要为单引号(')、双引号(")和三引号('''或""")。用单引号或双引号括起的是单行字符串,使用三引号可以定义多行字符串。
# 用单引号括起的单行字符串
'123abc'
# 用双引号括起的单行字符串
"123abc"
# 用三引号括起的多行字符串
"""
123
abc
"""
编程小知识
字符串在Python语言中是一种数据类型。对于名称、描述性的内容,都可以使用字符串。
变量,顾名思义,是变化的量,它好比一个存放数据的容器,这个容器有特定的容量。变量变化的不是变量本身,而是这个容器中的数据。程序员可以用变量这个容器存放这段内存的数据,也可以存放那段内存的数据,至于能存放多大的数据,取决于这个容器的大小。
编程小知识
程序中的数据存放在内存中,内存的基本单位是字节。如某个变量的大小是4字节,那么这个容器最多只能存放4字节大小的数据。
在Python中使用赋值操作符“=”定义变量。Python中的变量是一个存放内存地址的容器,内存的地址对应的是数据在内存中的字节编号。为了引用这个变量,我们要为变量命名。Python是一种动态类型的脚本语言,在运行时才进行类型解析,变量的类型取决于变量所指向对象的类型。
① 定义字符串变量。
# 使用"="操作符来定义变量
name = "张三"
# 定义了一个字符串变量,变量名为name,以后使用这个变量时,通过变量名name来引用
② 定义整数类型的变量。
number = 1314
③ 定义浮点数类型的变量。
number = 2019.1314
表达式表示一个求值的过程,它会产生一个值。例如,1+2就是一个表达式,它表达的是一个算术运算,结果为3。
表达式亦可由任意的单一表达式组合成复合表达式。例如,常见的数学运算表达式,可以用括号把每个子表达式括起来:1+(2+3)-(4-5)。
使用“=”来直接定义变量,实际上使用的是赋值表达式(语句),“=”操作符在编程语言中常用作赋值运算符。
编程小知识
赋值的过程,即把“=”操作符右边的值赋给“=”操作符左边的变量。
print()是Python的内置函数,可以将表达式的值输出到终端。print()函数的基本语法如下。
print(value,sep='')
其中,value表示输出的值,sep表示输出的值之间的分隔符。可以同时输出多个表达式的值,值以逗号进行分隔。
# 输出一个表达式的值
print(1+2)
# 输出多个表达式的值,并通过参数sep来指定分隔符
print(1+2,3*4,sep'#')
语句是一个指令块,表示的是一段代码的执行过程。与表达式不同的是,语句通常是没有值的,而表达式一定会产生一个值。举个简单的例子:a = 1 + 2,这条语句表示将表达式1+2的结果赋值给变量a。
在程序中,经常需要根据某种条件来对代码的执行过程进行控制。大多数编程语言提供了一些控制语句来实现这样的控制过程。
在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")。
循环结构从字面上来理解,是重复运动的结构。昼夜交替是一种循环结构:从白天到晚上,再从晚上到白天,如此周而复始,生生不息。
编程中的循环结构,即重复执行某一段代码的程序结构。在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")。
在Python中用pass 来表示空语句。空语句,顾名思义,即不包含任何语句。使用空语句是为了保持程序结构的完整性,起占位符的作用。
请读者完成以下4题。
(1)定义一个字符串变量,然后判断这个字符串值的真假。如何定义一个输出值为假的字符串?
(2)定义一个输出值非0的表达式。
(3)将描述“如果明天天气好并且我有空,那我就去爬山,否则,我得忙工作的事”转换成if语句的伪代码描述。
(4)将描述“如果学好了Python,那我会一直从事Python的开发工作”转换成while语句的伪代码描述。
函数就是一个代码块,也是一个语句块。为了引用变量,需要为变量命名,同样,为了引用这个代码块,也需要对这个代码块进行命名。这里的命名可以理解为函数名。
可以将函数类比为一个从输入到输出的转换器,函数的输入对应的是传递给函数的参数,在函数头中定义参数。而定义从输入到输出的转换逻辑要在函数体中进行。函数的基本属性为函数名、函数头和函数体。
笔者有话说
Python提供了匿名函数。所谓的匿名函数,指的是无函数名的代码块,通常为了引用这个代码块,需将匿名函数赋值给变量,再通过这个变量来执行这个匿名函数。
使用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。
在使用条件控制语句、循环控制语句,以及定义函数时,语句后面必须加上一个英文的冒号(:),否则程序会出现语法错误的异常信息。
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)定义一个函数,此函数有两个参数,返回值为参数之和。
(2)定义一个函数,此函数有一个参数,在函数中判断参数的真假情况,如果参数值为真就返回1,否则返回0。
(3)定义一个函数,此函数带两个参数,假设分别为a、b,在函数中判断a与b的大小,并返回较大的那个。提示:“>”是Python中的关系运算符,关系运算符左边的操作数称为左操作数,右边的称为右操作数。使用“>”操作符,可以判断左操作数是否大于右操作数。
类是面向对象程序设计中的概念,也是一种抽象的数据类型。程序员可以通过类自定义数据类型。对数据类型进行抽象是指对该数据类型的共有属性和行为进行概括。
在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
本节主要包含以下3个重要的知识点,请读者多加巩固。
① 类是一种抽象的数据类型,通过类,程序员可以自定义数据类型。
② 类中的__init__()方法为类的初始化函数,对类进行实例化时,Python会自动调用该构造函数。
③ Python中的self表示类实例化后的对象。
(1) 什么是类?什么是抽象?
(2) 定义一个Student类,在__init__()中分别指定name和age参数,将其设置为对象的属性。
(3) 在第(2)题的基础上,在Student类中定义一个output()函数,然后将name与age输出。提示:在构造函数中定义的属性,在类体中的方法中可以通过self来进行引用。
关键字亦称保留字,按保留字的字面意思来解释可能更容易理解——保留字就是保留给Python用的关键字。Python也是程序员编写的软件,编写者已经预先使用这些关键字作其他用途了,如果程序员再使用这些关键字,可能会产生冲突。图1-14所示为Python 3.7的预定义关键字。
图1-14
在定义变量名、函数名和类名等时,应当避免使用Python中的关键字来进行命名,否则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。
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个空格,读者在使用集成开发环境时可能需要进行额外配置,否则会带来移植上的问题。最佳的做法是在需要缩进的地方只用空格键来输入空格,这样就不会出错。
Python通过代码缩进来规范代码的书写格式,区分代码的逻辑层次。在适应并熟悉了Python的代码缩进规则以后,程序员写的代码会变得整齐美观。
切记,编写Python程序必须遵守其代码缩进规则,否则其会抛出IndentationError异常。
学习是有梯度的。在初学编程时务必先建立对编程概念的感性认识,不要把过多的时间虚耗在对复杂概念的抽象理解上。所谓感性认识,就是依托于你的想象力,把生活中的经验与编程概念结合起来。
先建立起对编程的感性认识,能激发出对学习的兴趣,而后再逐步加深对概念的理解。
学习是一个渐进的过程,也是一个重复的过程。这本节中,笔者从生活中的例子出发来讲解Python中的模块。
用文本编辑器打开一个Python文件,常会在文件头部看到这样几行代码:
import module1
import module2
import单词有“导入”的含义,而位于其右侧的正是Python中的“模块”,“import+空格+模块名”意为从当前源文件中导入某个模块。模块的英语单词是module,对于初学者来说模块这一概念可能有点抽象。
编程中的许多概念都源于生活经验,模块亦然。以手机为例,摄像头是它的一个组件,按键也是它的一个组件,各种基础组件共同组装成一部手机,这里的手机组件即模块,如图1-15所示。
图1-15
在Python中,读者可以把要实现的一系列功能通过变量、函数和类等工具写成一个模块。关于变量、函数和类等,在后续的章节中会进行详细讲解,这里只需要知道有这些概念即可。
模块可以重复使用,这是它的一个很重要的意义。再次以手机为例,手机的按键或其他部件如果损坏了,我们可以换个新的部件继续使用。
Python程序员会把模块写到文件中,Python文件以.py为扩展名,但.py对Python来说并不是必需的(这里不过多地阐述这类逻辑概念),.py对于用户的意义就是当人们看到以.py为扩展名的文件时会想到这是Python文件。
笔者有话说
本书的第16章有关于模块的进一步描述,笔者会一步一步地教读者实现一个自定义的模块。本节只起一个引领的作用,让读者对模块有一个直观的印象。
在当前的Python文件中,如果需要使用其他模块的功能,需要进行模块的导入。在Python中使用import语句来实现模块的导入。导入模块主要有以下3种形式。
os是Python中的内置模块,如需一次性导入整个os模块,可以采用以下语法:
import os
例如,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
在安装Python时,会同时安装一系列基础模块。Python的内置模块是为节省开发者时间而预先编写的一系列基础组件。当开发者需要使用某个内置模块时,直接使用“import ”导入相应模块即可。
Python默认会在当前目录中进行模块查找,如果找不到,会在指定路径中进行模块的查找,通过PYTHONPATH环境变量可配置模块的查找路径。所有的模块查找路径都保存在sys模块的path属性中。
本节主要包含以下4个重要的知识点,请读者加以巩固。
① 使用“import 模块名”的语法来导入一个模块。
② 模块的一个很重要的意义在于它可以被重复使用,也就是所谓“复用”。
③ Python文件常以.py为扩展名,我们通过函数、类等工具将要实现的功能以模块的形式写到Python文件。
④ Python的环境变量为PYTHONPATH。
(1)谈谈你对模块的理解。
(2) Python中的内置模块sys有一个getsizeof()方法,请你写一行代码,只导出sys模块下的getsizeof()方法。
(3)写一行代码,为os.path模块下的getsize()方法取一个别名。
(4)查找相关资料,然后描述os模块与sys模块的功能。
不少打算从事程序开发的人找不到入门之法,所谓难者不会,概因找不到好老师细心教你。在写出第1个Python程序hello world之前,读者必须按照1.1节中的内容对Python解释器进行安装。这里以Windows环境来进行程序的编写。
第1个Python程序为向屏幕输出字符串"hello world",程序代码如下。
# __author__ = 薯条老师
def main():
print("hello world")
if __name__ == "__main__":
main()
编写程序之前,得有个代码编辑器。常用的编辑器主要有Notepad++和PyCharm,前者是一款轻量工具,后者是一款IDE工具,包含了更加丰富的功能,稍显笨重。下面分别教大家下载和安装Notepad++和PyCharm。
Notepad++是 Windows操作系统下的一个文本编辑器,有完整的中文版界面。Notepad++支持语法高亮显示,不仅可以用来制作一般的纯文字说明文件,还十分适合编写计算机程序代码。读者可到Notepad++官方网站的下载页面中下载该编辑器,下载后直接双击文件安装即可。Notepad++界面如图1-16所示。
图1-16
PyCharm是专为Python开发的IDE工具,提供了诸多功能,以帮助程序员提升开发效率,如调试、语法高亮、代码跳转、自动完成、智能提示等。PyCharm分为商业版和社区版,商业版是收费的,社区版面向Python社区的学习人员,其提供的功能与商业版并无太大区别。一般来说,社区版即可满足程序员的开发需求。
读者可到JetBrains公司的官方网站下载PyCharm。单击Community下的DOWNLOAD按钮即可下载社区版PyCharm,如图1-17所示。下载完毕后,双击安装即可。PyCharm界面如图1-18所示。
图1-17
图1-18
从一开始学编程时,就得有一个目录组织的概念。清晰的目录结构有助于对项目的整体维护,这是作为一个程序员最基本的素养,读者须谨记在心。
(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。
下面用代码编辑器打开上一小节创建的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)尝试改写main()函数名为其他的函数名。
(2)改写helloworld.py,输出10个阿拉伯数字到屏幕上。
微信扫码关注【异步社区】微信公众号,回复“e54728”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。
教学视频 1个 2分钟
交互即互动。举一个浅显的例子:在社交软件里给人发消息,对方收到消息后回复消息,以作出相应的反馈,这就是所谓互动。
互动不只是人与人之间的交流、沟通,人与机器之间也能产生互动。例如,计算机向用户提供一个交互接口或界面,使得用户与计算机之间可以产生互动。用户打开浏览器上网,在搜索引擎中输入一个关键词并按回车键,网页上呈现的内容就是计算机程序给人提供的反馈信息。
常见的人与机器的互动还有在ATM机中取款,或者在苹果手机上召唤智能语音助手Siri,等等。
本节主要介绍Python交互模式的使用方法和相关代码编写模式。
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的内置类型,更多与数据类型相关的介绍会在后续的内容中逐渐展开。
可以直接在交互模式中执行算术运算,这里先简单介绍一下Python中常用的算术运算符+、-、*、和/,分别对应于数学上的加、减、乘和除。图2-3所示为在交互模式中进行1+1、1*1、 1-1和1/1的算术运算。以此类推,读者可以在交互模式中尝试其他的算术运算。
图2-3
在交互模式中能直接调用函数,以内置函数print()为例,如图2-4所示。
图2-4
读者可以惊奇地发现直接在交互模式中输入"你好,世界"与用print()函数打印的“你好,世界”十分相似,唯一的不同点在于print()打印的内容没有引号。有没有引号对于用户来说并没有区别,对程序员来说,带引号的输出表示字符串类型。
下面使用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
Python中的交互模式提供了方便的查找功能,通过内置函数help(),可以查阅函数、模块、类型和属性等的详细信息。
在执行help()函数进行特定的查找时,需要给help()函数传递参数。参数传递有两种形式:字符串类型和参数对象名。语法形式为help(字符串类型参数)或help(对象名)。
字符串类型参数通常是Python中预定义的关键字、属性名和模块名等;对象名参数可以是Python中内置的全局变量、函数名和已导入的模块名, 也可以是用户自定义的对象名(变量名、函数名等)。
笔者有话说
在交互模式中直接执行help(),不传递任何参数时,会进入help模式,此时直接输入待查阅的属性名或对象名,即可执行相应的查阅。在help模式中执行quit命令可退出help模式。
在交互模式中输入help("keywords"),可以输出Python中预定义的关键字,如图2-7所示。
图2-7
以Python中的关键字False为例,使用help查看关于False关键字的详细描述。在交互模式中输入help("False"),可以看到图2-8所示的输出结果。
图2-8
help输出的内容若超出当前的页面,可在页面底部看到一行-- More --的提示,表示还有更多内容,读者可以按回车键以查阅更多内容,或输入q退出当前的help视图。
以内置函数print()为例,print对应的是该函数的名字,直接在交互模式中输入help(print),即可查看该函数的信息,如图2-9所示。
图2-9
随着后续内容的慢慢展开,读者可以看到在交互模式中更多有意思的操作,现在需要好好消化目前的学习内容。
到了对交互模式说再见的时候了,在交互模式中执行exit()或quit()函数可以退出交互模式,返回到Windows的命令行。
本章内容比较简单,请读者掌握以下3个重要的知识点。
① 交互即互动,人与机器可以产生互动。
② 在Python的交互模式中可以进行算术运算等复杂操作。
③ 执行exit()或quit()函数可退出Python的交互模式。
(1)在交互模式中计算今年是否闰年,先用文字描述算法过程,再尝试以Python代码的形式写到交互模式中。
(2)进入help模式,查阅Python内置模块os的用法。提示:在Python中导入模块可以使用“import 模块名”指令,如导入os模块的指令为import os。
微信扫码关注【异步社区】微信公众号,回复“e54728”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。