Python程序设计案例教程 课件 模块7函数和模块_第1页
Python程序设计案例教程 课件 模块7函数和模块_第2页
Python程序设计案例教程 课件 模块7函数和模块_第3页
Python程序设计案例教程 课件 模块7函数和模块_第4页
Python程序设计案例教程 课件 模块7函数和模块_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

模块7函数和模块学习目标理解函数,掌握函数的定义和调用方式掌握局部变量和全局变量的使用掌握函数的几种形参和实参以及参数的传递方法掌握函数的返回值能熟练应用lambda函数和递归函数掌握导入模块、导入模块中的类、变量和函数的方法任务7-1输出习主席对青年的寄语函数的调用21函数的定义3目录形参函数的作用域54函数的返回值目录__name__6任务7-1(1)录入下面程序并调试,程序命名为sendWord.py,理解程序的功能,掌握函数的定义方法。行号 代码1 """程序名:sendWord.py"""2 defsend_word():3 """输出习主席对青年的寄语"""4 word='奋斗是青春最亮丽的底色,行动是青年最有效的磨砺。'\5 '有责任有担当,青春才会闪光。'6 print(word)7 8 send_word()任务7-1(2)编程求出算式2!+4!+5!的值,要求使用函数实现求每个数的阶乘,程序名为fact.py相关知识1.函数的定义def函数名([形参1,形参2,形参3,…]):

["""函数说明文本"""]

函数体

[return返回值]函数定义说明:函数定义首行:该行包括关键字def、函数名、圆括号、形参和冒号。函数名要符合标识符的命名规则。def与函数名之间有一个空格间隔。形参之间逗号分隔,形参可以省略但圆括号不能省。特别注意,本行结尾必须有一个冒号。1.函数的定义第2行通常是函数的说明文本,也称为文档字符串。它用于描述函数的功能及形参说明等等,使用三对双引号括起来。Python使用这些文本生成函数对应的说明文档。函数体:可以由一行或多行代码组成,是实现函数功能的代码。函数每次被调用时要执行的代码。return语句将函数返回值返回到调用函数的代码行。函数返回的值即称为返回值。函数也可以没有返回值和return语句,这样系统会自动给调用代码返回一个None。return语句可以出现在函数体中任何位置。函数体中可以有多个return语句。函数的定义函数名称和和它接受的参数列表的组合称为函数的签名,也可称为方法的签名(MethodSignature)。定义函数时需要遵循:函数定义在脚本的顶部。这样使代码更加清晰和易读。函数定义在需要调用的代码之前。2.函数的调用使用函数,就是调用函数。函数调用格式如下:函数名(参数列表)2.函数的调用调用函数的执行过程如下:(1)程序执行到调用函数语句时,转向该函数定义部分代码执行;(2)将实参传递给函数相应的形参;(3)运行函数体部分;(4)当执行到return语句时,则返回到程序调用函数的语句位置。程序接收函数的返回值,然后继续执行后续的代码。如果函数中无return语句,则当函数体执行结束后,返回程序调用函数语句处,继续执行后续的代码。3.形参函数定义时,函数名右侧圆括号中定义的参数称为形参,如上例中的r为形参。函数形参可以无,也可以有一个或多个。形参是函数体内代码完成功能所需要的数据。Python函数的形参主要包括无默认值形参(也称必选形参)、有默认值形参(也称可选形参)、可变形参。Python函数的参数无默认值形参即在声明函数时,这个形参只是一个变量名;有默认值形参即该参数形式为“变量名=值”;可变形参是变量名前有一个*或**,如*args,**kwargs以*开头的形参可以收集多余的位置实参,收集的实参形成一个各元素位置与位置实参顺序一致的元组。以**开头的形参可以收集多余的关键字实参,收集的实参形成一个字典,其中字典的键是关键字实参的名称,值就是对应关键字的参数值。举例行号 代码1 """demo711.py演示函数形式参数的应用"""2 3 defdemo1(a,b=90,*args,**kwargs):4 """演示形式参数的种类及顺序"""5 m=a+b6 print(f'a={a},b={b}')7 print('*args收集的数据:',args)8 print('**kwargs收集的数据:',kwargs)9 10 demo1(3,4,50,60,70,n=10,m=20)11 print()12 print("第2次调用函数")13 demo1(100)4.函数的返回值函数返回的值称为返回值。函数可以有返回值,也可以没有返回值。函数可以返回一个值或一组值,在函数中使用return语句返回函数的值。return语句可出现在函数体的任何位置,其功能是终止当前函数,将程序返回到调用函数的位置,并将函数的返回值带回到调用函数语句处。return语句格式如下:return语句格式如下:return[value]5.变量的作用域程序创建、访问、改变一个变量时,都是在一个保存该变量的空间内进行,这个空间为命名空间,即作用域,也即变量的作用范围。变量被赋值、创建的位置决定了其被访问的范围。在Python程序中,给变量赋了值即就定义了变量。根据作用域的不同,Python中的变量分为局部变量和全局变量。5.变量的作用域(1)局部变量。在函数内定义的变量,其有效范围就是该函数内部,称为局部变量。局部变量只能在它定义所在的函数内部使用。当局部变量与全局变量同名时,在函数内部,优先使用局部变量,在函数外,使用的是全局变量。5.变量的作用域(2)全局变量。在函数外定义的变量,其有效范围为整个Python程序文件,称为全局变量。全局变量是在它所在的整个Python程序文件都可以使用。默认情况下,函数内部只可以使用全局变量的值,但不能重新给全局变量的赋值。在函数内部,若要给全局变量赋新的值,需要在该函数体内先使用保留字global进行声明,语句格式如下:global全局变量(3)LEGB法则。LEGB法则各项含义如下:local(本地):函数内部。Enclosed(嵌套)外部嵌套函数。Global(全局):Python当前程序文件。Built-in(内置):Python内置模块。6.__name__Python中的模块(.py文件)在创建时,系统会自动加载一些内建属性和函数,这些变量和函数相当于模块中的一个功能,根据需要,可以调用这些变量和函数。例如__name__就是一个内建属性。直接运行python某个程序时,这个程序的__name__值为“__main__”,如果在其他程序中导入该程序(.py)文件运行时,__name__的值为文件主名,即模块名。testA.py行号 代码1

"""程序名:testA.py"""2 deftest():3 if__name__=='__main__':4 print('testA.py代码直接运行')5

print('__name__值为:',__name__)6 else:7 print("testA.py被其他程序调用")8

print("它的__name__值为:",__name__)9 10 test()#调用函数test()程序testB.py代码如下行号 代码1

"""程序名:testB.py"""2 importtestA#导入testA模块3

4

testA.test()#调用testA模块中的test()函数任务7-2输出手机相关信息关键字实参21位置实参3目录有默认值的参数4传递任意数量的位置实参解包裹传递65传递任意数量的关键字实参目录参数的混合传递7参数传递的两种模式8任务概述调试并运行下面代码,理解代码含义,区分位置实参、关键字实参、包裹传递实参等等行号 代码1 """函数参数传递,describe_mobile.py"""2 3 defmobile(brand,model,*args,**kwargs):4 print("手机品牌:{:<6s}手机型号:{:<s}".format(brand,model))5 print(f"手机其他信息:{args}")6 print(kwargs)7 代码8 defuser(name,age=18,**user_info):9 user_info['name']=name10 user_info['age']=age11 returnuser_info12 13 if__name__=='__main__':14 username='rose'15 age=28代码17 print("用户信息:")18 fork,vinuser_info.items():19 print(f"{k}{v}")20 print()21 print("手机信息:")22 mobile('华为','Mate60','黑色','HarmonyOs',total='256G',year='2023')相关知识1.位置实参在Python中调用函数时,必须将函数调用时用到的每个实参都关联到函数定义的一个形参。最简单的关联方式是基于参数的位置顺序,这种关联方式称为位置实参。举例行号 代码1

"""friends.py"""2 defdescribe_friend(name,sex,age):3 """显示朋友信息"""4

print(f"我的朋友叫{name},性别是{sex},今年{age}岁。")5

6

describe_friend('Rose','女',18)7

describe_friend('男',

'Tom',20)2.关键字实参关键字实参采用名称值对来给函数传递参数,是将形参名称与值关联起来,能清楚指出各个值的用途,这种向函数传递实参时不易混淆。行号 代码1 defdescribe_friend(name,sex,age):2 """显示朋友信息"""3 print(f"我的朋友叫{name},性别是{sex},今年{age}岁。")4 5 describe_friend(name='Rose',age=18,sex='女')3.有默认值的参数在声明函数时,可根据需要给形参指定默认值。在调用函数时,如用户省略了给已有默认值的形参传递值,则使用形参的默认值,如给该形参传递了值,就使用传递的值。3.有默认值的参数行号 代码1 defdescribe_friend(name,age,sex='女'):2 """显示朋友信息"""3 print(f"我的朋友叫{name},性别是{sex},今年{age}岁。")4 5 describe_friend(age=18,name='Rose')6 describe_friend('Lisa',21)7 defdescribe_friend(name,age,sex='女'):4.传递任意数量的位置实参编程时,如预先不知道函数需要接受多少个位置实参,可以使用形参名前带一个*的形参来收集多个位置实参,这种称为包裹传递。5.传递任意数量的关键字实参编程时,如预先不知道函数接受的关键字实参有多少个以及有哪些方面的信息,这时可使用形参名前带两个*的形参来收集多个关键字实参,这种也叫做包裹传递。6.解包裹传递在函数调用时,若实参是元组、列表、集合,可以使用*对函数实参解包裹传递;如果是字典,则可以使用**对实参解包裹传递。这样可将一个实际参数分解为多个值,并根据位置传递方式或关键词传递方式将值传递给各值。7.参数的混合传递函数调用时,参数的各种参数可以混合使用的,但一定要注意这些实参的前后顺序。这些参数的前后顺序为:位置实参、关键字实参、对应一个*形参的多个位置实参、对应两个*形参的多个关键字参数。7.参数的混合传递8.参数传递的两种模式Python中参数的传递模式可分为两种,一种是传值方式,当实参数值为数值、字符串、元组等不可改变数据类型时,传的只是值。在函数体内该值发生改变,对该值对应的原来变量值无影响;第二种传递的是引用,也称为传地址方式。如果实参是可变类型变量,如列表、字典、集合等,如果在函数内更改了其对应会值,调用者中相应原始对象也将随之改变。任务7-3排序学生成绩递归函数21匿名函数目录任务概述现有文本文件score.csv,存储有一个班学生成绩信息,该文件数据格式如图7-1所示。读取该文件数据并创建一个嵌套列表的列表score_list,该列表中每个元素对应一个学生相关信息列表。对score_list列表数据依照每个学生总成绩进行从高到低排序,然后输出排序后的数据score.csv文件部分数据相关知识1.匿名函数lambda匿名函数lambda是函数的一种简洁形式,是一种以表达式形式创建函数的方法,用于创建简单函数,不需要定义函数名,可以在程序的任何位置使用。lambda函数在定义时必须是单一表达式,使用关键字lambda关键字定义匿名函数,语法格式如下:lambda<形式参数列表>:<表达式>举例>>>add=lambdax,y:x+y>>>add(100,20) 120>>>add(8,-10) -22.递归函数递归程序的执行过程可以分为两大阶段:(1)递推阶段:把复杂的问题的求解推到比原问题简单一些的问题的求解;(2)回溯阶段:获得最简单的情况(也即遇到终止条件)后,逐步返回,依次得到复杂的解。2.递归函数fac(n)=1×2×3×......×(n-1)×n=fac(n-1)×n,f(1)=12.递归函数fac(n)=1×2×3×......×(n-1)×n=fac(n-1)×n,f(1)=1任务7-4绘制政府报告词云图导入模块21初识模块3目录PyInsatller模块4中文分词模块海龟绘图模块65目录random模块7time模块8词云生成模块Wordcloud任务概述(1)程序myWordCloud.py功能是绘制政府报告词云图,理解程序各语句,录入并调试。(2)更改上面代码中词云图蒙版图片、更改PILImage读图mode的值、词云图文本字体,生成不同风格的词云图。(3)将程序打包为生成可执行文件myWordCloud.exe相关知识1.初识模块Python中的模块分为三种:内置模块、自定义模块和第三方模块。内置模块就是安装完Python解释器之后,系统本身所提供的模块;自定义模块就是我们程序员自己写的模块;第三方模块就是别人写好的,具有特定功能的模块。安装相应的模块安装第三方模块语法格式:pipinstall模块名例:安装中文信息处理工具jiebapipinstalljieba为了加快安装速度,可以设置pip使用国内的镜像源,则语法格式如下:pipinstall模块名--index-url镜像源网址2.导入模块编程时,根据需要导入其他模块中的类、函数等。常用导入语句有以下几种:

导入整个模块import模块名1,模块名2,...使用这种方法导入后,如需使用该模块中的类、函数或变量,可以使用下面语句:模块名.类模块名.函数(参数)模块名.变量导入整个模块并指定别名import模块名as模块别名使用这种方法导入后,如需使用该模块中的类、函数或变量,还是使用点(.)的方法来引用。这时就只能使用别名,不能使用模块名,语句格式如下:模块别名.类模块别名.函数(参数)模块别名.变量导入模块中指定的函数、类导入模块中指定的函数、类from模块名import函数名,类名,变量名使用from可以同时导入一个模块中的多个函数、类或变量等对象。这时各个函数名、类名、变量名间要用逗号分隔。这时在程序中要使用这些相应的函数、类名等,直接用这些函数名、类名即可,不需要使用模块名加点的方法。例如:fromPyQt6importQtGuifromPyQt6.QtMultimediaimportQMediaPlayer,QAudioOutput导入模块中的函数或类,并指定别名from模块名import函数名(或类名)as别名这样在程序要使用相应的函数或类时,直接使用其别名即可,例如:fromturtleimportcircleasclcl(100)导入模块中所有的函数、类和变量from模块名import*使用*星号可让Python导入模块中所有的函数、类和变量。导入后,需使用相应的类、函数等,可以直接使用相应名称,例如:fromturtleimport*circle(300)forward(100)使from方法导入使from方法导入,可以简化模块中类、函数和变量等的引用。使用相对导入(仅限于包内部)from.import模块名from.模块名import函数名(或类名、变量名)from..子包import模块名3.PyInstaller模块

PyInstaller可将Python程序生打包成可直接运行的程序,这个程序就可以被分发到Windows、Linux或MacOSX平台上运行。安装Pyinstaller模块命令如下:pipinstallpyinstallerPyInstaller工具命令语法如下pyinstaller选项py源文件选项功能说明举例-h显示pyinstaller常用参数及功能说明pyinstaller-h-F只生成一个可执行文件pyinstaller-Fdemo.py-w隐藏控制台窗口pyinstaller-wdemo.py-i为生成的可执行程序指定一个图标pyinstaller-i.\fenghuang.jpgdemo.py-nNAME指定项目(产生的.spec、可执行文件)名字。如果省略该选项,那么第一个脚本的主文件名将作为spec的名字pyinstaller-nmydemodemo.py表7-1pyinstaller命令常用选项4.中文分词模块jieba

中文分词主要是为了进行文本挖掘、情感分析、关键词提取等任务。安装jieba库语句如下:pipinstalljiebajieba.cut函数语句格式如下:jieba.cut(sentence,cut_all)sentence即为要分词的语句字符串。cut_all设置分词的模式,值为True,则为全模式分词,即把可能成词的都列出来;cut_all值为False是默认模式,为精确分词模式,即最大可能精确分出句子中的词语。jieba.cut_for_search()是在精确模式的基础上,对长词再次进行切分,适用于搜索引擎查询。举例>>>importjieba>>>jieba.cut('勤劳勇敢的中国老百姓,日子一定会越过越红火!') <generatorobjectTokenizer.cutat0x0000024D8737A890>>>>'/'.join(jieba.cut('勤劳勇敢的中国老百姓,日子一定会越过越红火!'))Buildingprefixdictfromthedefaultdictionary...LoadingmodelfromcacheC:\Users\SHILIP~1\AppData\Local\Temp\jieba.cacheLoadingmodelcost1.437seconds.Prefixdicthasbeenbuiltsuccessfully.'勤劳勇敢/的/中国/老百姓/,/日子/一定/会/越过/越/红火/!'举例>>>'/'.join(jieba.cut('勤劳勇敢的中国老百姓,日子一定会越过越红火!',cut_all=True))'勤劳/勤劳勇敢/勇敢/的/中国/老百姓/百姓/,/日子/一定/定会/越过/越/红火/!'>>>jieba.lcut('勤劳勇敢的中国老百姓,日子一定会越过越红火!')['勤劳勇敢','的','中国','老百姓',',','日子','一定','会','越过','越','红火','!']>>>jieba.lcut('勤劳勇敢的中国老百姓,日子一定会越过越红火!',cut_all=True)['勤劳','勤劳勇敢','勇敢','的','中国','老百姓','百姓',',','日子','一定','定会','越过','越','红火','!']>>>jieba.lcut_for_search('勤劳勇敢的中国老百姓,日子一定会越过越红火!')

['勤劳','勇敢','勤劳勇敢','的','中国','百姓','老百姓',',','日子','一定','会','越过','越','红火','!']5.词云生成模块Wordcloud词云,也称为文字云或标签云,是一种数据可视化的形式,它通过将文本数据中提取的词汇组成某种彩色图形,以视觉方式突出出现频率较高的关键词,使浏览者快速领略文本的主旨。wordcloud是优秀的词云展示第三方库,使用pipinstallwordcloud命令可安装该模块。表7-2词云图常用参数6.海龟绘图模块turtle海龟绘图模块(turtle)是Python语言内置的一个标准模块,是一个绘图库,它提供了一个小海龟(turtle)作为画笔,通过模拟一只小海龟在屏幕上爬行来绘制图形。在turtle库中,无论是移动海龟(如使用turtle.forward(distance)函数)、绘制圆形、还是设置画笔属性等,涉及到的长度单位都是像素。(1)turtle基本概念1)绘制窗体。绘制窗体指的是Turtle的绘图窗口,可以使用setup()函数改变绘制窗体的大小。sesetup()函数语句格式如下:tup(width,height,startx=None,starty=None)width,height:窗体的宽和高。如宽和高值为整数时,单位为像素;为小数时,表示相对电脑屏幕的比例,如0.8则表示80%。startx,starty:这一坐标表示窗体左上角距离窗口左上角顶点的水平与垂直位置,如图7-7所示,如果这两个值为空,则窗体位于屏幕中心。2)画布(canvas画布是turtle的绘图区域,我们可以设置画布的大小和背景颜色。screensize()函数专门用于调整画布的尺寸,其语句格式如下:screensize(canvwidth=None,canvheight=None,bg=None)各参数含义如下:canvwidth,canvheight:画布的宽和高。bg:画布的背景颜色。3)海龟(别名:画笔)海龟即使用海龟模块绘图时所用的画笔,它是一个turtle类所创建的对象。海龟有颜色、画线的宽度、位置和方向等属性。画笔的默认形状是箭头形状海龟画笔的形状包括classic(箭头,默认形状)arrow(向右的等腰三角形)、turtle(海龟形状)、circle(实心圆)、square(实心正方形)和triangle(向右的正三角形)等6种。shape()函数使用shape()函数可以改变画笔的形状,其语句格式如下:shape(name=None)>>>importturtle>>>turtle.shape()#获取当前画笔形状名称'classic'>>>turtle.shape('turtle')#设置画笔形状为海龟形状,执行该语句后,画笔显示为海龟形状>>>turtle.shape()'turtle'4)turtle的空间坐标体系5)turtle的角度坐标体系所谓绝对角度,也就是不论当前画笔方向朝哪,只要是执行了turtle.seth(angle)函数,就将画笔方向(海龟头的朝向)也即调整到图7-10所示坐标系中angle角度方向。画笔默认的方向是朝正右方5)turtle的角度坐标体系海龟角度:从海龟的角度来看,turtle.left(angle)画笔逆时针转angle度,turtle.right(angle)画笔顺时针转angle度,(2)turtle常用函数(2)turtle常用函数(2)turtle常用函数2)常用画笔运动函数。

7.random模块random模块是Python标准库中用于生成伪随机数的模块。伪随机数是通过算法生成的数列,在一定范围内表现出随机性。伪随机数在一定程度上是可预测的,但对于大多数应用来说已经足够。随机数在计算机科学中有着广泛的应用,例如机器学习、随机抽样、加密和游戏开发等等。8.time模块time模块是Python中处理时间相关操作的核心工具。time模块提供了处理时间和日期的多项功能,包括时间获取、格式化、转换、延迟以及计时等。time模块支持三种时间格式:时间戳(Timestamp)、结构化时间(StructTime)和格式化时间(FormattedTime)任务5-5异常处理try语句21程序的三种错误目录任务概述编程:接收用户输入两个数x和y的值,求出x除以y的商;如果y为0,则提示除数不能是0;如果x或y不是合法数字,则提示输入数据不合法,不是合法数字;如果能正常计算商,则输出两个数的商;无论是否能正常计算商,最后都输出提示“程序结束”。程序代码行号 代码1

#程序名:Division.py2 try:3 num1=eval(input("请输入被除数:"))4

num2=eval(input("请输入除数:"))5

num3=num1/num26 exceptZer

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论