




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章Python概述Python程序设计全套可编辑PPT课件01初识Python02搭建Python开发环境03Python集成开发环境04本章回顾01初识PythonPython是一种跨平台、开源、免费、面向对象、解释型的高级编程语言。可应用于Web开发、网络爬虫、游戏开发、自动化运维、人工智能等领域。在2022年的TIOBE编程语言排行榜中,Python位居第一。Python的由来1989年圣诞节,荷兰人吉多·范·罗苏姆在阿姆斯特丹家中为打发无趣,决心开发新脚本解释程序,因喜欢《MontyPython飞行马戏团》,将其命名为Python。Python并非凭空创造,源自吉多曾参与设计的闭源编程语言ABC,他借鉴Modula-3、Unixshell和C等语言优点,经过一年多改进优化,1991年第一个Python编译器(解释器)诞生。Python的版本Python有三个主要版本:1.1994年发布1.0版,具多种优秀结构、数据类型及拓展系统。2.2000年发布2.0版,新增功能且转社区开发,后因重复结构模块被3版取代,2020年停止维护。3.2008年推出3.0版,整合标准库,解决2.x问题,回归设计理念,2021年已至3.9.7版。Python的特点优点:1.简单灵活,贴近人类语言,格式要求不严格,专注解决问题。2.免费开源,用户可参与改进性能、弥补漏洞,发展迅猛。3.可移植性强,无需编译,不同平台装解释器即可运行,支持多平台。4.类库丰富,涵盖广,可调用C/C++加速关键代码,是“胶水语言”,社区好,巨头参与,功能全。
Python的特点缺点:1.运行速度慢,一边运行一边“翻译”源代码且作为高级语言多做很多工作,虽远慢于C/C++和Java,但可由硬件性能提升弥补。2.代码加密困难,因是解释型语言直接运行源代码,难以对其加密。Python的应用领域由于Python简单灵活、免费开源、可移植性强等众多优点,Python的应用领域众多,可总结如下图所示。Web开发Python
在Web开发方面优势明显,国内豆瓣网、OpenStack、Dropbox等项目均用Python实现。有多个成熟的Web框架:1.Django:2003年诞生于美国,遵循MVC设计模式,功能完整,2019年12月发布3.0版本,由管理工具、模型、视图、模板、表单、管理站等组成。Web开发2.Flask:2010年出现,面向简单需求和小型应用,轻量级可定制,具有内置开发服务器和调试器等特点。3.Tornado:2009年发布,作为FriendFeed网站基础框架,强大可扩展非阻塞,具有高效网络库、完备WebSocket支持等。4.Twisted:有10多年历史,开源事件驱动型网络框架,支持多种协议,提供客户端和服务器开发工具。网络爬虫Python
在网络爬虫方面应用广泛,Google等公司大量使用。网络爬虫程序主要由四部分组成:1.爬虫调度器:是爬虫入口,负责程序的开始、运行和结束,主要由循环判断待爬取URL集合是否为空。2.URL管理器:辅助调度器管理待爬URL集合和已爬取URL集合,可使用Python的set数据类型。3.网页下载器:是爬虫核心技术之一,会用到Urllib、Requests、Selenuim等库。4.网页解析器:是爬虫另一核心技术和最后一步,从页面提取感兴趣信息,常用解析库有BeautifulSoup、requests-html、XPath等。游戏开发市面上很多游戏用C++写高性能模块,Python或Lua写逻辑。Lua功能简单、体积小,Python支持更多特性和数据类型。国际知名游戏《文明》用Python实现。Python可直接调用OpenGL实现3D绘制,是高性能游戏引擎技术基础,有很多Python语言的游戏引擎如Pygame、Pyglet、Cocos2d等。自动化运维Python自动化运营1.运维自动化目的是实现IT运维质量、降低成本,是将静态设备结构转化为动态弹性响应策略。2.在很多操作系统中,Python是标准组件,可在终端直接运行。3.Python编写的系统管理脚本在可读性、性能、代码重用度及扩展性方面优于普通Shell脚本,适合做自动化运维。4.常用Python运维工具包括Pexpect、Paramiko、Fabric、Ansible、Saltstack等,涵盖自动化操作、系统管理、配置管理、集群管理等主题。科学计算Python科学计算1.Python擅长科学计算和数据分析,能绘制高质量2D和3D图像,有很多成熟开发库如Numpy、SciPy、Pandas、Matplotlib等。2.Numpy是专门用于数值计算的库,可存储处理大型矩阵,底层函数多为C编写,运算速度快,是Scipy、Pandas、SKlearn、Tensorflow等框架基础库。3.Scipy基于Numpy,用于数学、工程等领域,可高效处理统计、积分等问题,与Numpy结合提高科学计算效率。4.Pandas基于Numpy构建,有更高级数据结构和分析能力,提供Series和DataFrame两种核心数据结构,能快速处理多种数据且可与其他库完美集成。5.Matplotlib是最基础核心的数据可视化库,提供多种图表绘制函数及丰富的画布、颜色设置方法。科学计算Python科学计算1.人工智能是热点领域,与传统行业结合是未来方向,人工智能领域工程师热门且工资高。2.
Python在人工智能的机器学习、神经网络、深度学习等方面是主流编程语言。3.
世界优秀人工智能学习框架如TensorFlow、PyTorch、Karas神经网络库等都是用Python实现。4.
由于人工智能的发展,Python近几年发展迅猛,在AI时代作为头牌语言的位置无人可撼动。02搭建Python开发环境工欲善其事,必先利其器。如果需要使用Python,则需要先搭建Python开发环境。Python是跨平台的开发工具,可以在Windows、Linux、macOS等操作系统中进行编程。Windows开发环境搭建在Python官网下载安装包,路径“Downloads—>Windows”Windows开发环境搭建双击下载后的程序(python-3.8.5-amd64.exe)进行安装,选择自定义安装,并勾选“AddPython3.7toPATH”复选框,把Python的执行目录放到系统的PATH环境变量中,这样我们就可以从Windows系统的任何位置调用Python解释器。Windows开发环境搭建在弹出的安装选型中采用默认设置(全选),安装Python文档、安装下载pip工具、安装Tkinter和IDLE开发环境、安装标准库测试套件、安装pylauncher(用于关联.py后缀文件和Python解释器)。Windows开发环境搭建单击“Next”,打开高级选项对话框,重点关注两项,第一,“Installforallusers”,为所有用户安装Python,这样除了当前登陆用户外,Python安装完后本机其他用户也可以使用。第二,根据需要,选择一个安装位置,也可以使用默认位置。选择完成后,就可以单击“Install”按钮开始安装。Windows开发环境搭建安装时间由前面选择的安装内容决定,选择的内容越多所需要的时间就越长。安装完成后,即可看到如右图所示的对话框,单击“Close”按钮关闭此对话框。Windows开发环境搭建安装完成后,需要检查是否安装成功,使用“win+R”快捷键,在运行框中输入“cmd”打开命令行。在命令行中输入“python”,如果出现图1-16框中的信息,即代表安装成功。Windows开发环境搭建Python安装成功之后,我们可以先使用Python输出一首诗,体验一下。在“>>>”之后,我们即可输入Python代码。除了使用命令行编写代码外,我们还可以使用安装Python时自带的工具IDLE,通过IDLE编写代码时,会有不同的颜色显示代码,更容易阅读。Linux开发环境搭建Linux是一套免费使用和自由传播的类Unix操作系统,是一个多用户、多任务,且支持多线程和多CPU的性能稳定的网络操作系统。Linux有上百种不同的发行版,目前主流的包括CentOS、Ubuntu、Fedora、OpenSuse、Debian等。对于Python环境,目前主流的Linux发行版都自带,但是有时由于版本问题还是不能完全满足我们的需求,需要自己搭建开发环境,请扫码查阅:以64位CentOS7系统为例安装Python3。MacOS开发环境搭建和Linux发行版类似,MacOS系统一般会自带Python环境,可以在终端(Terminal)窗口中输入命令“python”来检测安装的Python环境及其版本。从下图可以看出,此MacOS系统中自带的Python环境为2.7.18版本,而如果我们需要使用Python3版本,需要单独进行安装。具体安装方法请扫码查阅。03Python集成开发环境集成开发环境,即IntegratedDevelopmentEnvironment,简写为IDE。用来表示辅助程序员开发的应用软件。使用IDE可以提高开发效率,常用的PythonIDE包括IDLE、PyCharm、Anaconda等。IDLEIDLE是在Windows上安装Python环境时,选择安装的,IDLE比较轻量级,界面比较简单,包含了代码编辑、解释执行、代码跟踪调试等功能,在上一小节中我们已经使用过这个工具。IDLE分为初始时的交互模式(交互窗口)、编辑模式和调试模式,我们之前使用的就是交互模式。IDLE编辑模式编辑模式需要从交互窗口进入,选择“File”菜单下的“NewFile”子菜单。编辑模式是一个独立的窗口,初始状态是一个空的文档,等待输入代码。在编辑模式下,代码编辑完成后,首先要把它保存成一个Python源码文件。选择“File”菜单中的“Save”子菜单,或者按下“ctrl+s”快捷键,把代码保存成一个.py后缀的文件。详见右图。IDLE编辑模式代码保存后就可以使用解释器对它解释执行了。选择“Run”菜单下的“RunModule”子菜单,或按下“F5”快捷键,就会对当前打开的Python文件进行解释执行。执行的结果会在交互窗口中显示出来。IDLE调试模式如果对代码执行的结果有疑问,可以启动调试模式。调试模式也要从交互窗口的菜单里打开(“Debug”菜单下的“Debugger”子菜单)。IDLE编辑模式如果需要在代码中加断点,可以在代码编辑窗口中,右键单击要添加断点的代码行,在弹出的菜单中,选择“SetBreakpoint”即可。添加了断点的代码行会自动设置成黄色,这时按下“F5”启动代码执行,就会进入调试模式,并且执行到断点处自动停止。PyCharmPyCharm是目前Windows下一个比较流行的、且功能比较强大的IDE。它是Jetbrains公司的一款商业软件,需要付费购买使用。但同时它也提供了一个免费的社区版本,功能比付费版本少一些。PyCharmPyCharm的安装步骤很简单,由于本书不以PyCharm为主要使用工具,在这里就不详细介绍其安装步骤了,下面列出了安装时需注意的几点问题:
1.选择安装位置时,选择的安装盘剩余空间一定不能小于PyCharm所需空间。
2.在选择安装选项时,可以根据需要适当勾选。
3.安装完成后,第一次打开PyCharm需要做一些设置。AnacondaAnaconda是目前比较流行的Python发行版本,它有强大的包管理与环境管理功能,Anaconda中除了包含Python的基本环境和内置库以外,还会安装一些常用的第三方包,使用起来很方便。由于安装Anaconda会自动安装JupyterNotebook,而JupyterNotebook做为一个交互式的工具,非常适合初学者,也是我们这本书主要使用的工具,请读者扫码学习Anaconda的下载和安装过程。JupyterNotebookJupyterNotebook是一个交互式的环境,其本质是一个Web应用程序,便于创建和共享程序文档,可以一边写代码一边记笔记,如果电脑中已安装了Anaconda,那么单击开始菜单栏中的“JupyterNotebook”即可进入。JupyterNotebook在JupyterNotebook主页的菜单栏上,有Files(文件)、Running(运行)、Clusters(集群)三个选项,我们用的最多的就是Files,可以对文件进行复制、重命名、移动、下载、删除等操作。案例【案例描述】所谓体脂率就是人体内脂肪重量在人体总体重中所占的比例,它反映人体内脂肪含量的多少。男性和女性的体脂率正常范围不同,男性为15%~18%,女性为25%~28%,体脂率过高和过低都影响健康。计算体脂率首先需要计算出BMI(BodyMassIndex,身体质量指数),BMI的计算公式为:BMI=体重/身高的平方(国际单位kg/㎡);然后结合BMI计算体脂率,公式为:体脂率=1.2×BMI+0.23×年龄-5.4-10.8×性别(男为1,女为0)。【案例要求】①接收用户输入信息。②计算BMI。③计算体脂率。本章回顾本章共分为三小节内容,第一小节主要介绍Python由来、Python版本、Python特点以及Python应用领域,旨在让大家对Python有一个系统地认识。第二小节为Windows、Linux和MacOS三个操作系统下的Python安装过程介绍。第三小节主要介绍Python常用的IDE,包括IDLE、PyCharm、Anaconda和JupyterNotebook,最后通过一个小案例带领大家体验Python的魅力。本章回顾1.以下不属于Python特点的是()。A.免费开源 B.可移植性强 C.丰富的类库 D.编译型语言2.以下不属于Python常用IDE的是()。A.PyCharm B.VisualStudio C.Anaconda D.IDLE3.关于Python描述错误的是()。A.Python是解释型语言B.Python运行速度高于JavaC.Python是开源且免费的D.Python具有丰富的类库4.简述Python的应用领域。期待您的宝贵意见第二章Python基础语法与数据类型Python程序设计01Python的基础语法02Python中的基础数据类型03Python中的高级数据类型04本章回顾01Python的基础语法Python的语法特点Python语言与C、Java等编程语言有许多相似之处,但是也存在一些差异,本小节将从代码缩进、注释、标识符与关键字、命名规范、编码规范、基本输入输出函数6个方面介绍Python语法的特点。代码缩进Python与C、Java等编程语言最大的区别就是缩进方式不同,Python不采用大括号“{}”来分隔代码块,而是使用缩进来写模块。缩进的空白数量是可变的,可以使用空格或Tab键实现,但是要注意的是同一个级别代码块的缩进量必须相同,如果不采用合理的代码缩进将报错。注释Python注释分为单行注释和多行注释,单行注释采用“#”开头,多行注释使用三个单引号(''')或三个双引号(""")。标识符与关键字标识符是计算机语言中用于标识变量、函数、类、模块等名称的有效字符串集合。Python标识符字符串规则与C、Java等编程语言类似,总结如下:由字符(A~Z和a~z)、数字和下划线组成,但数字不能作为第一个字符。不能包含空格、@、%等特殊字符。不能包含Python关键字,可使用标准库中的keyword模块查看。命名规范在编写代码时,命名很重要,好的名字可以增加代码的可读性,下面列出了常用的命名规范供参考。包名不宜过长,全部使用小写字母,不推荐使用下划线,如mypackage。模块名不宜过长,全部使用小写字母,多个单词间可以使用下划线“_”分隔,如my_module。类名应使用首字母大写的单词串(驼峰命名),如MyClass。函数、变量及属性命名规则与模块类似,即全部使用小写字母,多个单词间可以使用下划线分隔。常量、全局变量全部使用大写字母,多个单词间可以使用下划线分隔。单下划线“_”开头的模块或函数是受保护的,双下划线“__”开头的实例变量或方法是类私有的。Python编码规范PEP8PEP8由吉多团队于2001年7月创建,是Python增强提案的缩写,版本号为8。它约定了Python代码的编码规范,涵盖9大类要求,部分常用要求如下:一、文档编排1.一个import语句只导入一个模块,不采用“importos,sys”形式。2.若用“fromXXimportXX”引用库,可省略“module.”,但可能与本地名字冲突时需采用“importXX”。二、代码编排1.使用4个空格缩进,不用Tab,不能混合使用Tab和空格。2.不行尾加分号,不将两条命令放同一行。3.每行字符数不超79,超则用小括号连接多行内容。4.if/for/while语句即使执行语句只有一句也须另起一行。Python编码规范PEP8三、注释1.与代码自相矛盾的注释比没注释更差,修改代码时要优先更新注释。2.注释块通常应用在代码前,并和这些代码有同样的缩进。四、空格(总体原则,避免不必要的空格)1.各种右括号、逗号、冒号、分号前不要加空格。2.函数的左括号前、序列的左括号前不要加空格。如Func(1)、list[2]。3.文件中的函数与类之间应该用两个空行隔开;同一个类中,各方法之间应该用一个空行隔开。4为变量赋值的时候,赋值符号的左侧和右侧应该各自写上一个空格,而且只写一个。基本输入输出函数Python中最基本的输入和输出函数是input函数和print函数,这两个函数我们在“计算体脂率”的案例中都使用过。(1)input函数input函数是Python的内置函数,用于接收用户在键盘的输入信息,基本语法如下:str用于保存输入的变量,在Python3中,无论从键盘输入的是数字还是字符都将被做为字符串读取,所以在“计算体脂率”案例中使用了int、float函数转换数据类型。基本输入输出函数print函数是我们接触Python时用到的第一个函数,使用它可以将结果输出到控制台,也可以输出到指定文件中,右图为基本输入输出函数的使用案例。Python运算符运算符是一种用于执行特定的数学或逻辑操作的符号,Python提供了丰富的运算符,包括算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符等。1.算术运算符:是用来处理基本的数学四则运算的符号,Python常用的算术运算符总结如下图所示。赋值运算符2.赋值运算符主要用于为变量赋值。变量在编程语言中是程序员定义的一串字符,代表一个数据,也可以说是程序员给这个数据起的名字。Python中常用的赋值运算符总结如表下图所示。比较运算符3.比较运算符,又称关系运算符,主要用于对变量或表达式结果进行比较(表达式是使用运算符将不同类型的数据连接起来的式子),其返回结果有True(真)和False(假)两种。Python常用的比较运算符总结如下图所示。逻辑运算符4.逻辑运算符用来表示日常交流中的“并且”,“或者”,“除非”等思想,逻辑运算符可以将两个或多个关系表达式连接成一个或使表达式的逻辑反转。Python常用的逻辑运算符总结如下图所示。其他运算符除了上述运算符之外,Python还有成员运算符、身份运算符、位运算符(把数字看作二进制来进行计算),总结如右图所示。运算符优先级在使用运算符时,是有优先级的,优先级高的运算先执行,优先级低的运算后执行,同一优先级的运算从左到右顺序执行。表2-6中按照优先级由高到低的顺序列出了Python运算符。运算符优先级关于运算符的使用举例如下图所示。02Python基本数据类型数字类型数字类型主要用于存储数值,数字类型是不可改变的。如果修改了数字类型中的变量值,那么会先把该值存放到内存中,然后让其指向新的内存地址。Python中的数字类型包括整数(int)、浮点数(float)和复数(complex)。整数整数用来表示数学中的整数数值,包括正整数、负整数和0。在Python中,整数按照表现形式可分为十进制整数(默认)、二进制整数、八进制整数和十六进制整数,相关描述如下图所示。需要注意的是不管用什么方式表示整数,在计算机中,所有数据都是以二进制方式存放在内存中。浮点数浮点数可表示数学中小数,如3.1415926、1.414等,且能用科学计数法形式(以e/E表示,如3.14可写成多种形式)表示。使用浮点数计算时需注意,因计算机系统中的说小数以二进制形式存于内存,其计算会有与数学上不同的现象,如下图所示浮点数由于0.1和0.2在内存中是以一个非常接近的数字存储的,所以两者相加,得到的数字不是精确的0.3。基于以上原因,在编程语言中,不能直接使用比较运算符“==”判断浮点数的大小,如右图所示。复数Python中的复数用来表示数学中的复数,形式与数学中一致,都是由实部和虚部组成,如a+bj,其中a代表实部,b代表虚部。可以分别使用real和imag来访问复数的实部和虚部,如右图所示。字符串类型字符串是用于表示文本的数据类型,可由数字、字母、下划线组成。在Python中,用英文引号标识的一串字符就是字符串类型数据。右图中的四种引号形式都可以表示字符串,但是需要注意前面和后面使用的引号形式必须一致。转义字符Python中的字符串支持转义字符,转义字符即使用反斜杠“\”对一些特殊字符进行转义,常用的转义字符总结如下图所示。字符串的基本操作字符串的基本操作包括可以使用加号“+”进行字符串连接,使用索引访问字符串中的字符,使用切片截取字符串,使用成员运算符判断字符串中是否包含给定字符等,总结如下图所示。应用举例运行结果如下图所示格式化字符串格式化字符串是指先制定好一个模板,在这个模板上预留几个空位,然后再根据需要填上相应的内容。在Python中,格式化字符串有两种方式,分别是使用“%”操作符和使用format方法。格式化字符串(1)使用“%”操作符格式化字符串使用“%”操作符格式化字符串的语法如下:格式化字符串(1)使用“%”操作符格式化字符串使用“%”操作符格式化字符串的语法如下:格式化字符串(2)使用format方法格式化字符串字符串对象提供了format方法用于进行字符串格式化,它是通过{}和:来代替%(目前格式化字符串一般使用format方法,%方式不太常用了),其语法如下:其中template用于指定字符串的显示样式即模板,exp用于指定要转换的项,如果有多项,则使用逗号进行分隔。接下来重点介绍创建模板,模板是使用“{}”和“:”来指定占位符,其语法格式如下:格式化字符串应用举例格式化字符串(3)f-string格式化字符串在Python3.6中,新增了一种格式化字符串的使用,即f-string,其可以直接在占位符中插入变量,使用起来更方便,如下图所示。从下图中我们可以看出,f-string格式化字符串的使用方式很简单,首先在需格式化的字符串前使用字母f,然后将被替换字段放入大括号“{}”中即可。字符串常用方法在开发过程中,经常需要对字符串进行操作,如替换字符串中的某个字符、字符串切割等,现将常用的方法总结如右图所示应用举例应用举例布尔类型布尔类型用于表示真值或假值,在Python中用常量True和False表示,比较运算符返回值为布尔类型。Python里布尔类型是int类型子类,True可表1,False可表0,如右图所示在Python中,所有对象可做真值测试,除以下几种情况结果为假外,多数情况为真:-False或None。-数字中的0。-空序列(含字符串、元组、字典、列表,下面详细介绍)。03Python高级数据类型在上面中我们介绍了数字(整数、浮点数、复数)、字符串、布尔三种基本数据类型,本节我们将介绍列表、元组、字典这三种在开发中非常常用的高级数据类型。列表、元组、字典,还有之前介绍的字符串都属于序列,序列指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,所以每一个值都有一个对应的位置编号,即索引,如下图所示。列表的特点列表即List,是Python中使用非常频繁的数据类型,列表中的所有元素都放在一对中括号“[]”中,两个相邻元素间使用逗号“,”分隔。1.列表的特点列表非常灵活,其特点可总结如下:列表是任意对象的有序集合,可变序列。列表中的元素可以是数字、字符串、元组等Python支持的所有数据类型。同一个列表中,元素的类型可以不同。列表的创建与删除列表的创建可以使用最基本的“[]”形式,也可以使用list方法,列表的删除可以使用del语句,举例如右图所示。列表的创建与删除上页中使用的range()函数是Python内置的函数,返回的是一个可迭代对象,其语法如下:列表常用操作与方法列表是序列的一种,所以序列的常用操作和函数(如右图所示),列表也都可以使用。应用举例应用举例列表常用操作与方法除此之外,列表还有一些常用的添加、删除元素等方法,如右图所示。应用举例元组元组即Tuple,是与列表相似的数据类型,不同之处在于元组不能修改。元组中的所有元素都放在一对圆括号“()”中,两个相邻元素间使用逗号“,”分隔。1.元组的使用由于元组是不可变序列,所以序列通用操作和常用方法中,关于修改元素的内容元组都不支持,如右图所示。元组列表中的关于添加、删除元素的方法,在元组中也不支持,如右图所示,元组只支持count和index两个方法。应用举例元组与列表的区别元组与列表非常类似,它们之间的主要区别总结如下:列表使用中括号“[]”创建,元组使用小括号“()”创建。
列表是可变序列,元组是不可变序列。列表可以使用索引和切片的方式访问和修改元素,元组也可以使用索引和切片访问元素,但不支持修改元素。列表中可以使用append()、insert()、remove()等方法添加、删除元素,而元组中没有这些方法。元组比列表的访问和处理速度快,所以元组可以用于保存程序中不会修改的内容。字典字典即Dict,也是Python中使用非常频繁的数据类型,与列表类似,不同的是字典是无序可变序列。字典中的所有元素都放在一对大括号“{}”中,两个相邻元素间使用逗号“,”分隔,字典中的元素是“键(key)值(value)对”类型,每个键和值之间用冒号“:”分隔,通过key可以快速找到value。元组字典的创建可以使用最基本的“{}”形式,也可以使用dict方法。举例如下图所示。字典的常用方法字典的常用方法总结如下图所示。应用举例集合集合即Set,用于表示不重复元素,是无序、可变序列。在Python中,集合中的所有元素都放在一对大括号“{}”中,两个相邻元素间使用逗号“,”分隔。1.集合的创建集合有两种创建方式,一种是直接使用大括号“{}”创建,另一种是使用set()函数,set()函数可以将字符串、列表等类型转换为集合,举例如下页所示应用举例从下图的运行结果可看出,集合是无序的,且如果创建集合时有重复元素,将只保留一个元素,还有一点需要注意的是创建空集合只能使用set()函数,因为使用大括号“{}”创建,将代表是空字典。集合的常用方法集合的常用方法总结如下图所示。应用举例集合的运算集合可以进行交集、并集、差集运算,这是和列表、字典等其它序列的最大区别。关于集合运算的相关方法总结如下图所示。列表
元组
字典
集合的关系本节分别介绍了列表、元组、字典、集合的基本使用,它们都属于序列,有很多相似的地方,也有很多区别,总结如下图所示。03数据类型转换Python是动态类型的编程语言,也称为弱类型编程语言,它不需要像Java、C一样在使用变量前声明变量类型,但有时需要用到类型转换。右图为常用的数据类型转换函数。应用举例列表、元组、字典的遍历案例【案例描述】某健身培训班学生分为A、B、C三组,每组共有学员5人。A组成员包括赵钱、孙李、周吴、郑王、冯陈,成绩分别为79、68、77、86、92;B组成员包括褚卫、蒋沈、韩杨、朱秦、尤许,成绩分别为81、83、62、76、82;C组成员包括何吕、施张、孔曹、严华、金魏,成绩分别为96、73、76、81、82。【案例要求】①分别打印输出A组、B组、C组的总分数、平均分数、最高分和最低分。②分别打印输出A组、B组、C组的成绩单。③统计该班级的总成绩并按照分数从高到低打印成绩单。案例案例04本章回顾1.关于Python语法和命名规范,描述错误的是()。A.Python采用大括号“{}”来分隔代码块B.Python注释分为单行注释和多行注释C.在Python中,模块名不宜过长,全部使用小写字母D.在Python中,常量、全局变量全部使用大写字母2.关于PEP8编码规范,描述错误的是()。A.PEP是PythonEnhancementProposal(Python增提案)的缩写,
8是版本号B.不要在行尾添加分号“;”,也不要用分号将两条命令放到同一行C.if/for/while语句中,不用另起一行D.注释块通常应用在代码前,并和这些代码有同样的缩进3.Python的数字类型不包括()。A.整数 B.字符串 C.浮点数 D.复数04本章回顾4.关于字符串的描述,以下说法错误的是()。A.字符串是用于表示文本的数据类型,可由数字、字母、下划线组成B.可以使用加号“+”进行字符串连接C.字符串中的title()方法用于将所有的字符转换为大写D.格式化字符串是指先制定好一个模板,在这个模板上预留几个空位,然后再根据需要填上相应的内容5.以下不属于序列的是()。A.元组 B.字符串 C.字典 D.复数6.字典的表示形式是()。A.[] B.{} C.() D.<>7.列表的表示形式是()。A.[] B.{} C.() D.<>04本章回顾8.关于列表的描述,以下说法错误的是()。A.列表中的元素可以是数字、字符串、元组等Python支持的所有数据类型B.append()方法用于在列表的末尾添加元素C.remove()方法用于删除列表中的某个元素D.列表是有序、可变、不可重复序列9.元组的表示形式是()。A.[] B.{} C.() D.<>10.简要阐述列表、元组、字典、集合的区别。期待您的宝贵意见第三章
流程控制Python程序设计01选择结构02循环结构03本章回顾01选择结构
选择结构也称为分支结构,对应现实生活中的选择问题,比如我们浏览购物网站时,如果喜欢此件商品就选择买下它,如果不喜欢则选择浏览下一个;中午吃饭时可以选择在家做饭,也可以选择点外卖或者去外面餐厅吃。
Python中的选择结构分为单分支(if语句)、双分支(if...else语句)和多分支(if...elif...else语句)三种。if语句介绍单分支使用if语句表达,其基本语法如下:if表达式:
语句块其中表达式可以是布尔值、比较表达式、逻辑表达式等,如果表达式为真则执行“语句块”,如果表达式为假则跳过“语句块”,继续执行后面的语句。单分支的流程图如右图所示。if语句的使用使用if语句的举例如下图所示:score=float(input('请输入您的语文考试成绩:'))if(score<60):print('您的成绩不合格')print('谢谢使用!')if...else语句介绍双分支使用if...else语句表达,其基本语法如下:if表达式:
语句块1else:
语句块2if...else语句可以理解为如果表达式为真就执行语句块1,否则执行语句块2。语句块可以由一条语句组成,也可以由多条语句组成。if...else语句的流程图如下图所示。if...else语句介绍需要注意的是else必须要和if搭配使用,单独使用else会报错,如下图所示:if...else语句的使用if...else语句的使用举例如下图所示:score=float(input('请输入您的语文考试成绩:'))if(score<60):print('您的成绩不合格')else:print('您的成绩合格')print('谢谢使用!')if...elif...else语句介绍多分支就是在双分支语句的基础上,对各种不同情况做进一步的区分,多分支使用if...elif...else语句表达,其基本语法如下:if表达式1:
语句块1elif表达式2:
语句块2elif表达式3:
语句块3......else:
语句块nif...elif...else语句介绍
if...elif...else语句的执行逻辑,即若表达式1为真执行语句块1,否则依次判断后续elif的表达式,直到所有表达式为假则执行else下的语句块n。同时指出如果业务不需要,最后的else语句块可以省略,且没有else语句时就没有其对应的缩进语句。还提到多分支语句有流程图如右图所示。if...elif...else语句的使用接下来我们使用if...elif...else语句将下图中的情况进行进一步区分,如下图所示:score=float(input('请输入您的语文考试成绩:'))if(score<0orscore>100):print('您输入的内容不合法')elif(score>=90):print('您的成绩优秀')elif(score>=70andscore<90):print('您的成绩良好')elif(score>=60andscore<70):print('您的成绩及格')else:print('您的成绩不及格')print('谢谢使用!')if语句的嵌套if语句可以嵌套使用,在开发过程中,可以结合需求选择嵌套方式,这里将“案例1:计算体脂率”中得到的结果用分支结构进行判断,如下图所示。name=input("请输入姓名:")sex=int(input("请输入性别(男为1,女为0):"))age=int(input("请输入年龄:"))height=float(input("请输入身高(单位:m):"))weight=float(input("请输入体重(单位:kg):"))BMI=weight/(height*height)rate=1.2*BMI+0.23*age-5.4-10.8*sexprint('-------------------个人信息—{}--------------------------'.format(name))print(('姓名:{}\n性别:{}\n年龄:{}\n身高(cm):{}\n体重(kg):{}\n''BMI:{}\n体脂率:{}').format(name,sex,age,height,weight,BMI,rate))#使用if嵌套进行判断if(sex==1):if(rate<15):print('您的体型偏瘦')elif(rate>=15andrate<=18):print('您的体型正常')elif(rate>18):print('您的体型偏胖')if(sex==0):if(rate<25):print('您的体型偏瘦')elif(25>=rate<=28):print('您的体型正常')else:print('您的体型偏胖')案例【案例描述】在大学学习阶段,某门课程的期末考试采用“n页开卷”形式考查学生的学习情况。“n页开卷”是指考生可以携带不超过n页A4纸大小的手抄纸质资料进入考场应考。【案例要求】模拟考生进入考场前的身份查验流程,只有具备以下3个条件,才能进入考场参加考试(在本案例中,假设n=3)。学生校园卡姓名出现在考生名单中。学生身份证信息与学生校园卡中的信息一致。 没有携带手抄纸质资料或所携带的手抄纸质资料页数不超过3页。案例02循环结构在日常生活中,人类、动物每天都要吃饭、睡觉,太阳每天都会东升西落,在编程语言中,类似这样反复做同一件事情叫做循环。在Python中主要有while循环和for循环两种类型。while循环介绍while循环又称为条件循环,是通过一个判断条件来控制是否需要反复执行循环体中的语句。while循环由while关键字、条件表达式、冒号和循环体组成,语法如下:while判断条件:
循环体while循环介绍循环体即执行语句,可以是单个语句或语句块,当判断条件为真时则执行循环体,执行完毕后,重新进入while循环进行条件判断,如果判断条件为真时则执行循环体,以此类推,直到判断条件为假时退出循环。while循环的执行过程如右图所示。while循环的使用#构建数据numbers=list(range(1,20,3))print('数字列表:',numbers)#用于存放奇数odd=[]#用于存放偶数even=[]#使用while循环,直到列表中没有元素停止循环while(len(numbers)>0):number=numbers.pop()if(number%2==0):even.append(number)else:odd.append(number)print('奇数:',odd)print('偶数:',even)while循环的使用举例如下图所示。while循环使用总结在使用while循环时,如果条件判断语句一直是True,循环就会一直执行下去,也就是常说的死循环,如右图所示。遇到这种情况,可以单击JupyterNotebook上方的“中断服务”按钮(如右图)强制终止程序。while循环使用总结在使用while循环时,需注意以下几点:①在使用while循环时,需添加将循环条件变为False的代码。②循环体既可以由单个语句组成,也可以由多条语句组成。③如果循环体中的语句尚未确定,可以先使用pass语句占位。for循环介绍for循环也称计次循环、遍历循环,是重复执行一定次数的循环,可以用于数值循环和遍历字符串、列表等序列。for循环由保留字for和in组成,语法如下:for循环变量in对象:
循环体if语句其中循环变量表示每次循环所获得的元素,对象指的是待遍历或迭代的对象,循环体即执行语句,可以是单个语句或语句块。简单理解for循环是由保留字for和in构成的循环结构,它可以从遍历对象中逐一提取元素放到循环变量里,当遍历对象中的所有元素都放入循环变量,且已执行完成循环体操作,那么循环结束,程序退出。for循环的执行过程如右图所示。使用for循环进行数值循环for循环最基本的用法就是进行数值循环,常常和range函数结合使用,举例如右图所示。sum1=0sum2=0sum3=0#计算1到100的累加foriinrange(101):sum1+=iprint('1+2+3+...+100=',sum1)#计算1到100的奇数累加foriinrange(1,101,2):sum2+=iprint('1+3+5+...+99=',sum2)#计算1到100的偶数累加foriinrange(2,101,2):sum3+=iprint('2+4+6+...+100=',sum3)使用for循环进行序列遍历使用for循环可以对字符串、列表、元组等序列类型进行遍历,举例如右图所示。#遍历字符串text1='万事皆有可能'foriinrange(len(text1)):print(i,text1[i])foriintext1:print(i)#遍历列表text2=['岭外音书断','经冬复历春','近乡情更怯','不敢问来人']foriinrange(len(text2)):print(i,text2[i])foritemintext2:print(item)#遍历元组text3=('春','夏','秋','冬')foriinrange(len(text3)):print(i,text3[i])foritemintext3:print(item)#遍历字典#通过items方法或者字典的“键值对”列表text4={'语文':89,'数学':96,'英语':80}foritemintext4.items():print(item)forkey,valueintext4.items():print(key,value)使用for循环进行序列遍历上页的运行结果如右图所示。通过以上案例可以看出字符串、列表、元组的遍历方式基本一致,而字典因为存储的是“键值对”且无序,遍历的方式会有所不同。for循环和enumerate函数在上页代码中,我们为了获取字符串、列表、元组的索引值,采用的方式是range()函数和len()函数结合使用,除此之外,我们还可以借助enumerate()函数同时输出索引值和元素内容。enumerate()函数用于将一个可遍历的数据对象组合成一个索引序列,同时列出数据和数据下标,一般用在for循环当中。enumerate()函数的语法如下:enumerate(sequence,[start=0])enumerate()函数的参数说明如下图所示。参数描述sequence用于指定一个序列、迭代器或其它支持迭代的对象start【可选】用于指定下标起始位置,默认为0for循环和enumerate函数使用for循环和enumerate()函数进行序列遍历的举例如下图所示。list1=['向晚意不适','驱车登古原','夕阳无限好','只是近黄昏']#默认索引从0开始forindex,iteminenumerate(list1):print(index,item)#指定索引从1开始forindex,iteminenumerate(list1,start=1):print(index,item)在Python中,有一种方法可以快速创建序列,就是利用for循环来循环创建序列,也就是推导式。推导式是Python的一种独有特性,列表推导式的语法如下:使用for循环快速创建序列[conditionforvariniterator[ifcondition]]使用for循环快速创建序列其中[ifcondition]是可选的,元组推导式和列表的类似,只是将[]换成(),接下来我们看具体使用,如右图所示。使用for循环快速创建序列上页代码中用到了random模块,Python中的random模块用于生成随机数,其中randint()方法用于生成随机整数,random模块下还有一些其它的用于生成随机数的方法,我们将在第7章展开介绍。字典的推导式与列表、元组有一些不同,其语法如下:使用for循环快速创建序列和列表推导式类似,[ifcondition]是可选的,字典推导式的使用举例如下图所示。循环嵌套和if语句类似,循环也可以嵌套使用,循环嵌套顾名思义就是在一个循环中嵌入另一个循环。循环嵌套可以是两个while循环嵌套、两个for循环嵌套、while循环和for循环嵌套、多层循环嵌套等,在开发过程中,可以结合需求灵活运用。循环嵌套1.使用循环嵌套打印九九乘法表接下来用一个最经典的九九乘法表来了解循环嵌套的使用。如果想要生成如图3-20的九九乘法表,通过观察我们发现,它是由9行9列组成,我们可以用外层循环控制行,里层循环控制列(如下图所示)。循环嵌套打印九九乘法表循环嵌套使用循环嵌套打印空心四边形为了加深对循环嵌套的理解,我们再举一个使用while循环嵌套打印空心四边形的例子,如代码左图所示。循环嵌套也可以使用for循环嵌套实现循环嵌套结合上面的案例,我们可以总结出:一般用外层循环控制行,内层循环控制列。for循环和while循环之间可以相互转化。外层循环执行一次,里层循环会执行多次。循环控制在使用循环语句时,可以使用break语句和continue语句对循环进行控制,break语句用于结束整个循环,continue用于结束当次循环。举个生活中例子,假如你正在看一个电视剧,由于某个演员你不喜欢你想弃剧,不想继续看下去了,此时使用break;如果是某一集剧情设置不合理,你打算跳过本集,继续观看下一集,此时使用continue。除此之外,在Python中还有一个起到占位作用的空语句pass。break语句break语句用于结束当前正在执行的循环(for、while),转而执行这些循环后面的语句。break语句一般与if语句搭配使用,表示在某种条件下跳出循环。break语句的使用形式如下所示:下图为for循环中break语句的执行过程(while循环和for循环类似)。break语句break语句的使用举例如下图所示。continue语句continue语句用于结束当前正在执行的这一次循环(for、while),接着执行下一次循环。即跳过循环体中尚未执行的语句或语句序列,接着进行下一次是否执行循环的判定。continue语句的使用形式如下所示:右图为for循环中continue语句的执行过程(while循环和for循环类似)。continue语句continue语句的使用举例如下图所示。我们可以总结出continue语句只是结束本次循环,进入到下一循环;而break语句则是结束整个循环,不再进行条件判断。pass语句Python中提供了一个pass空语句,表示不做任何事情,应用场景是为了保持程序结构的完整性时,用来占位。举例如下图所示。案例【案例描述】剪刀石头布游戏又称“猜丁壳”、“猜拳”,是比较古老的游戏,游戏的起源可追溯到汉朝的手势令。在中国很小的孩子都会玩这个游戏,因为它的规则很简单,石头克剪刀,剪刀克布,布克石头。这个游戏的主要目的是为了解决争议,因为三者相互制约,因此不论平局几次,总会有胜负的时候。【案例要求】设计一个剪刀石头布游戏,游戏规则如下:①玩家出剪刀或石头或布。②电脑随机输出一个剪刀或石头或布。③将玩家出的结果和电脑出的结果进行比对。案例案例运行结果本章回顾1.关于Python选择结构,描述错误的是()。A.选择结构也称为分支结构,对应现实生活中的选择问题B.Python中的选择结构分为单分支(if语句)、双分支(if...else语句)和多分支(if...elif...else语句)三种C.if...else语句可以理解为,如果表达式为真则执行“语句块”,如果表达式为假则跳过“语句块”D.多分支使用if...elif...else语句表达2.【多选】Python中的选择结构包括()。A.if语句
B.if...else语句 C.if...elseif...else语句 D.if...elif...else语句3.【多选】Python中的循环结构包括()。A.do...while循环 B.for循环 C.do循环
D.while循环本章回顾4.关于Python循环结构,描述错误的是()。A.while循环又称为条件循环,是通过一个判断条件来控制是否需要反复执行循环体中的语句B.for循环也称计次循环、遍历循环,是重复执行一定次数的循环,可以用于数值循环和遍历字符串、列表等序列C.for循环不能和range函数结合使用D.可以使用for循环和enumerate函数进行序列遍历5.关于循环嵌套的描述错误的是()。A.循环嵌套可以是两个while循环嵌套、两个for循环嵌套、但不能是while循环和for循环嵌套B.在循环嵌套中,一般用外层循环控制行,内层循环控制列C.在循环嵌套中,外层循环执行一次,里层循环会执行多次D.循环嵌套就是在一个循环中嵌入另一个循环本章回顾6.【多选】关于循环控制的描述正确的有()。A.在使用循环语句时,可以使用break语句和continue语句对循环进行控制B.break语句用于结束当前正在执行的循环,转而执行这些循环后面的语句C.continue语句用于结束当前正在执行的这一次循环,接着执行下一次循环D.break语句用于结束整个循环,continue用于结束当次循环7.简述单分支、双分支、多分支的执行过程。8.简述while循环、for循环的执行过程。期待您的宝贵意见第四章
函数Python程序设计01函数的基本使用02参数传递与变量作用域03本章回顾函数函数是可一次定义多次使用的代码段。若把Python类比汉语,函数相当于典故等,能提高代码可读性和开发效率。比如班级有40人,需按固定格式打印个人信息,常需此功能,用函数可定义一次后随时调用。本章将介绍函数基本使用、参数传递、变量作用域等内容。第4章函数4.1函数的基本使用4.1.1函数的定义与调用4.1.2函数的返回值4.1.3Python常用内置函数4.1.4案例5:验证哥德巴赫猜想4.2参数传递与变量作用域4.2.1函数的参数传递4.2.2函数传递的参数分类4.2.3变量作用域4.2.4匿名函数与高阶函数4.2.5案例6:计算某公司销售员工的奖金01函数的基本使用在计算机中,函数是可被引用的程序或代码段,用于实现某种功能且可重复使用。其作用包括通过友好命名让代码易读易调试、减少重复代码使程序更短小且便于后续修改、将长程序拆分为函数方便单独调试后组装。之前使用过的input()、print()、range()等是Python提供的标准内置函数。而我们也可以自己定义函数并使用,本节将学习函数的定义和调用。函数的定义Python中函数的定义使用def关键字实现,具体的语法如下:deffunctionname(parameters):functionbody参数描述functionname用于指定函数名称,在调用函数时使用parameters【可选】用于指定函数参数,如果不指定,则说明该函数没有参数,在调用时也不用传递参数;如有多个参数,参数间使用逗号“,”分隔functionbody【可选】函数体,即在函数被调用时,要执行的功能代码,如果想要定义一个什么都不干的函数,可以使用pass语句占位;如果函数有返回值,可以使用return语句参数说明如表4-1所示。函数的定义接下来我们定义一个打印个人信息的函数,如下图所示。上图中,函数的名称是showinfo,调用时即使用这个名字;小括号“()”中的name、sex和age是函数的参数,用逗号“,”进行分隔;冒号“:”后边的两句代码是函数体,即功能代码,这里就是使用格式化字符串来打印个人信息;此代码没有return语句,代表没有返回值。由于此部分代码只是函数定义,还没有对其进行调用,所以运行此代码没有输出。函数的调用函数的定义是通过参数和函数体决定函数能做什么,但函数并没有被执行。如果想要执行该函数就需要调用函数,如调用图4-1中的函数showinfo的代码为showinfo('张三','男',23),输出结果就是格式化打印“张三”的姓名、性别、年龄信息。调用函数的语法格式为:functionname(parameters_value)functionname是要调用函数的函数名,parameters_value指的是需要传递的参数值,多个参数之间用逗号“,”分隔,如果定义的函数中有返回值,可以使用一个变量进行接收。函数的定义与调用应用举例函数的定义与调用举例如右图所示。右图中定义了一个获取偶数的函数,此函数体中有返回值,在调用时使用变量evenlist对其进行接收,并将其打印出来。函数的定义与调用应用举例函数也是可以嵌套使用的,如右图所示。函数的定义与调用应用举例函数的定义与调用应用举例在上页代码中将“案例1:计算体脂率”进行改造,定义一个计算体脂率的函数count_bodyfat,在此函数中又定义了一个根据体脂率判断体型的函数decide_health,此代码的运行结果如右图所示。函数的定义与调用应用举例上页代码中还为函数添加了说明文档,函数的说明文档放在字符串中,通常位于函数内部、所有代码的最前面(如右图),可以通过内置的help()函数或__doc__属性获取说明文档的内容,如下图所示。函数的返回值在函数定义中,若需要获取返回结果可使用return语句指定返回值。函数调用的参数传递解决向函数内部输入数据问题,返回值解决向外部输出数据问题。当函数中有return语句时,执行该语句会直接结束函数执行,可简单理解为return语句用于退出函数。其语法格式为return[value],value为可选参数,不指定则返回None,可一个或多个值,任意类型。return语句的应用举例见下页。函数的返回值return语句的使用Python常用内置函数我们在前面3章已经使用了很多Python的内置函数,最常用的就是在2.1.1中介绍的基本输入输出函数input()和print(),除此之外我们在学习第2章的时候也用到了很多内置函数,如int()、list()、range()等。为了能够让大家更容易记忆常用的内置函数,这里按照功能将其分为数学运算、序列相关、类型转换、逻辑判断和对象操作。其中类型转换类在第2章已经介绍过,此处不再赘述。数学运算数学运算相关的常用内置函数总结如表4-2所示。数学运算数学运算类的常用内置函数使用举例如【代码4-4】所示。数学运算序列相关序列相关的常用内置函数总结如下图所示。下图中列举的序列相关函数我们在2.3中都使用过,此处不再举例说明逻辑判断逻辑判断相关的常用内置函数总结如表4-4所示。逻辑判断逻辑判断类的常用内置函数使用举例如下图所示。对象操作对象操作类的常用内置函数总结如下图所示。上图中列举的对象操作相关函数,都很简单且大部分函数在之前章节都使用过,此处不再举例说明。案例【案例描述】哥德巴赫是一位德国数学家,1742年哥德巴赫在给欧拉的信中提出了以下猜想:任一个大于2的整数都可写成三个质数之和。但是哥德巴赫自己无法证明它,于是就写信请教赫赫有名的大数学家欧拉帮忙证明,欧拉在回信中提到了另一个等价版本,即任一大于2的偶数都可写成两个质数之和,现在常说的的哥德巴赫猜想指的是欧拉的版本。欧拉虽然提出了等价版本,但是他直到死也始终无法证明这个猜想。【案例要求】设计一个程序用于验证哥德巴赫的猜想,从键盘随意输入一个大于2的偶数,输出其分解式,如果输入的偶数找不到分解式,则代表哥德巴赫猜想不成立,如果随意输入的每个偶数都能有分解式,则认为歌德巴赫猜想是不能证伪的。案例02参数传递与变量作用域上节我们学习了函数的定义、调用、返回值等函数的基础知识,掌握了这些知识之后,我们可以自定义一个函数并使用,但是如果想在开发中熟练应用函数或是能读懂其他人写的函数相关代码,还需要掌握参数传递和变量作用域的相关知识。形式参数与实际参数函数调用时的参数传递实现了从函数外部向函数内部输入数据的问题,定义函数时函数名后括号中的参数为形式参数,调用函数时函数名后括号中的为实际参数,如下图所示。在定义函数时,函数的形式参数不代表任何具体的值,只有在函数调用时,才会有实际参数传给函数。参数传递的分类实际参数传递给形式参数时,根据实际参数类型不同分为传递不可变对象和传递可变对象。传递不可变对象时,参数传递后改变形式参数值,实际参数值不变;传递可变对象时,参数传递后改变形式参数值,实际参数值也改变。在Python中,字符串、元组、数字类型是不可变对象,列表、字典是可变对象,关于参数传递的举例见右图。参数传递的分类上页的运行结果如下图所示。参数传递的分类
从上页的运行结果可看出,不可变对象的参数传递过程中传递的只是对象的值,没有影响对象本身,在执行函数体过程中,会在内存中生成一个新的对象,被调用后对象的内容没有改变;而可变对象的参数传递过程中传递的是引用,在执行函数体过程中,没有生成新对象,被调用后对象的内容随着形式参数的改变而改变。函数传递的参数分类在函数调用过程中根据传递的参数类型,可将参数分为位置参数、关键字参数、默认参数、不定长参数和强制关键字参数。1.位置参数位置参数也称为必须参数,就是必须以正确的顺序传入给函数。我们之前使用的参数传递均是位置参数,位置参数需要确保两点,第一点是数量必须与定义时一致,第二点是位置必须与定义时一致。接下来以调用【代码4-2】中定义的count_bodyfat函数为例,分别介绍一下数量与定义时不一致、位置与定义时不一致时会出现的情况。位置参数(1)参数数量与定义时不一致当数量与定义时不一致时,将出现TypeError错误,如图4-12所示,出现错误的原因是缺少“height”和“weight”两个参数。位置参数(2)参数位置与定义时不一致当位置与定义时不一致时,也将出现TypeError错误,如图4-13所示,出现错误的原因是形式参数的类型与实际参数的类型不一致,并且在函数中,这两种类型还不能正常转换。位置参数但是有一种情况,就是在调用函数过程中,虽然指定的实际参数与形式参数的位置不一致,但是它们之间的数据类型一致,那么程序不会报错,但是会出现得到的结果与实际不符的情况,如下图所示。上图中,年龄和身高参数调换了位置,程序可以正常运行,但是计算出的体脂率是负数,明显不符合实际情况。关键字参数关键字参数是在调用函数时用形式参数的名字指定输入参数。使用关键字参数,函数调用时只需写正确参数名,无需考虑参数顺序与声明不一致的问题,因为Python解释器能根据参数名匹配参数值,使参数传递更灵活方便。以调用【代码4-2】中定义的count_bodyfat函数为例理解关键字参数,如下图所示。上图中,身高和年龄的位置是与定义函数时不一致的,但是此函数能正常运行,且得到的结果是合理的。默认参数如果在函数定义时,直接指定了默认值,那么在调用函数时,即使没有传入这个参数,程序也不会报错。需要注意的时,在定义函数时,默认参数必须放在所有参数之后,不然会报错,如下图所示。默认参数关于默认参数的使用举例如下图所示。不定长参数不定长参数也叫可变参数,即可传入的实际参数可以是多个。不定长参数有两种形式,一种是加一个星号“*”以元组的形式传入,还有一种是加两个星号“**”以字典的形式传入。不定长参数*parameter一个星号“*”形式的参数是和元组结合起来一起使用的,表示接收任意多个实际参数并将其放入到一个元组中,使用举例如右图所示。不定长参数上图的运行结果如下图所示。强制关键字参数除了上述介绍的4种参数之外,函数传递过程中的参数还有一种强制关键字参数,如果开发过程中需要限制关键字参数的名字时则可以使用这种参数。强制关键字参数需要一个特殊分隔符“*”,后面的参数被强制设为关键字参数。在函数调用时,分隔符“*”后面的参数一定要给出名字,否则会报SyntaxError错误,如下图1所示。变量作用域所谓变量的作用域就是变量的有效区域,即变量在该区域内能被解释器识别,超出该区域时访问会报错。变量的作用域由变量的定义位置决定,在不同位置定义的变量,它的作用域是不一样的。本节我们主要介绍局部变量和全局变量。局部变量局部变量是指在函数内部定义并使用的变量,它的作用域也仅限于函数内部,出了函数再使用就会报错。如图4-22所示,由于template是在showinfo()函数内部定义的变量,在函数之外使用即会出现NameError错误。局部变量需要注意的是函数参数也属于局部变量,在函数外部使用会报错,如下图所示。全局变量全局变量是指既能在函数内使用也能在函数外使用的变量。如下图所示。全局变量需要注意的是如果想在函数内修改函数外定义的变量,可以使用global关键字,举例如下图所示。全局变量下图为分别调用demo1()和demo2()的结果。匿名函数与高阶函数匿名函数就是没有名字的函数,与普通函数相比,匿名函数除了没有名字外,功能也比较单一,不包括循环结构,没有return语句,通常只是一个表达式。而高阶函数就是允许把函数作为参数传入到另一个函数中,还允许返回一个函数,所谓的函数式编程就是指这种高度抽象的编程范式。在Python中,匿名函数常被使用在高阶函数中。匿名函数的定义与使用在Python中,匿名函数又叫lambda表达式,使用lambda关键字来创建,其语法格式如下:参数说明如下图所示。匿名函数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国镍锌电池市场运行状况及发展前景分析报告
- 2025-2030年中国遮阳蓬市场运行动态及投资战略研究报告
- 2025江苏省建筑安全员A证考试题库
- 2025-2030年中国被褥行业市场运行状况及发展趋势分析报告
- 2025-2030年中国花露水行业运行状况与投资战略研究报告
- 2025-2030年中国腮红(胭脂)行业发展趋势与十三五规划分析报告
- 2025-2030年中国粗粮饮料产业需求状况及发展策略分析报告
- 2025-2030年中国稀土抛光粉市场发展趋势规划研究报告
- 2025-2030年中国真空镀膜机市场运行现状及投资规划研究报告
- 2025-2030年中国男士香水行业运行态势及发展前景分析报告
- 电网工程设备材料信息参考价(2024年第四季度)
- PDCA项目降低非计划性拔管发生率持续改进
- 质量问题检出奖励申请表模板
- 中职学生日常行为规范主题班会讲稿
- 组织行为学13-组织文化
- 供应链管理课件第5章供应链合作伙伴选择与评价
- 餐饮店面投资预算(900平方米)
- 预应力工程施工质量验收标准
- 旅游资源规划与开发实训指导书
- 立体几何专题:距离和角
- DBJ-T01-43-2003_(北京)通用家庭居室装饰工程质量验收标准
评论
0/150
提交评论