




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python程序设计第5章函数与模块【教学目标】
学习内容函数定义函数参数的传递函数的返回值变量的作用域常用函数模块、模块包常用内置模块(类库)介绍技能目标会函数的定义及其使用方法能理解变量的作用域能对常用函数使用会模块和模块包的使用方法能对常用内置模块使用任务一编写党员信息管理系统
党员信息管理系统可以对党员的基本信息进行管理,规范基层党支部的建设,提高了信息化管理水平。
本次的任务是使用Python开发党员信息管理系统V1.0,实现显示党员信息和添加党员信息。【提示】(1)使用函数来封装每个功能:打印主菜单、显示党员信息、添加党员信息。(2)使用二维列表来保存党员信息,党员的信息包括编号、姓名、入党时间。(3)根据实际需求,将保存党员信息的列表作为参数传入到函数中。5.1函数定义
函数是有组织的、可重复使用的代码块。它用于执行单个相关操作,可以提高应用的模块性和代码的重复利用率。5.1函数定义5.1.1内置的标准函数及使用
内置函数是安装Python时自带的、开发者可以直接使用的基本函数。Python中有很多内置函数,这些函数就是一个小程序,它们接收输入、处理输入,并产生输出。5.1函数定义5.1.2用户自定义函数及调用
Python不仅含有可以直接使用内置函数,也允许开发者自定义函数,自定义函数的过程也可以理解为创建一个具有某种功能的方法。如果要使用自定义函数,则需调用自定义函数。函数的定义格式如下。def函数名([形参列表]):
函数体
[return表达式]函数的调用格式如下。函数名([实参列表])实例一函数的定义和调用例子,实现两数的和。defmy_add(a,b): #定义有返回值函数my_add()return(a+b)
#函数体defmy_print():
#定义无返回值函数my_print()print("helloPython") #函数体c=my_add(11,22) #调用有返回值函数my_add()print(c) #输出返的值my_print() #调用无返回值函数my_print()5.2函数参数的传递
参数列表为空的函数称为无参函数。如果函数不需要从外部传递数据到函数中就可以使用无参函数。
需要在调用函数时向函数内传递数据,此时定义的函数就是有参函数。
在Python中,函数的参数在定义时,一般有位置参数、默认参数、关键字参数、不定长参数等。5.2函数参数的传递5.2.1位置参数
函数定义可以包含一个形参列表,而函数调用时则通过传递实参列表,以允许函数体中的代码引用这些参数变量。
定义函数时声明的参数,即形式参数,简称形参;调用函数时,提供函数需要的参数的值,即实际参数,简称实参。
实际参数值必须按默认位置顺序依次传递给形式参数。如果参数个数不对,则出现语法错误。位置参数例子,实现比较两个数大小,并输结果。defmy_compare(a,b):ifa>b:print(a,">",b)elifa==b:print(a,"=b",b)else:print(a,"<",b)my_compare(1,2)x=11;y=8my_compare(x,y)my_compare(1)程序输出结果:1<211>8Traceback(mostrecentcalllast):File"C:/Users/Administrator/Desktop/5-2.py",line8,in<module>my_compare(1)TypeError:my_compare()missing1requiredpositionalargument:'b'5.2函数参数的传递5.2.2默认参数
Python允许在定义函数时给参数设置默认值,这样的参数称为默认参数。
给参数添加默认值的方法是在定义函数时使用“=”给参数赋值,赋值号右侧即为参数的默认值。设置了默认值的参数,在调用时可以不给这个参数显式赋值,此时参数值就是它的默认值;如果在调用时给这个参数赋值,则默认值不生效。defbabble(words,times=1):
print(words*times)babble(“Hello”)#结果Hellobabble(“Hello”,3)#结果lloHelloHello5.2函数参数的传递5.2.3关键字参数
函数调用时,可通过名称(关键字)指定传入的参数,例如my_func(a=1,b=2)或my_func(b=2,a=1)。按关键字指定传入的参数称为关键字参数。使用关键字参数具有三个优点:参数按名称意义明确;传递的参数与顺序无关;如果有多个可选参数,可选择指定某个参数值。关键字参数示例,验证三种调用方式是否等价,如根据本金b,年利率r,年数n,计算最终收益v的函数,公式v=b(1+r)n。defgetValue(b,r,n=5):v=b*((1+r)**n)print(format(v,'.2f'))getValue(1000,0.05)getValue(b=1000,r=0.05)getValue(r=0.05,b=1000)程序输出结果:1276.281276.281276.285.2函数参数的传递5.2.4不定长参数
在定义函数时,允许声明带星的参数,如deffunc(*args),则表明调用本函数时允许向函数传递可变数量的实参。调用函数时,带一个星号时,则从“*”后所有的参数被收集为一个元组;带两个星号时,则从“**”后所有的参数被收集为一个字典。可变参数示例1。defmy_sum(a,b,*c):total=a+bforninc:total=total+nreturntotalprint(my_sum(1,2))print(my_sum(1,2,3,4,5))print(my_sum(1,2,3,4,5,6,7))可变参数示例2。defmy_sum(a,b,*c,**d):total=a+bforninc:total=total+nforkeyind:total=total+d[key]returntotalprint(my_sum(1,2))print(my_sum(1,2,3,4,5))print(my_sum(1,2,3,4,5,male=6,female=7))5.3函数的返回值
函数可以返回值,并且返回的值可以是任意数据类型,即在函数体中使用return语句从函数返回一个值,并终止跳出函数,如果需要返回多个值,则可以返回一个元组。deffunc():
return1,2,3a,b,c=func()print(a,b,c)
#结果(1,2,3)实例六设计求若干数中最大值函数,如输入三个数,输出最大数。求若干数中最大值函数的方法一般如下。(1)最大值的初值设为一个比较小的数,或者取第一个数为最大值的初值。(2)利用循环,将每个数与最大值比较,若此数大于最大值,则将此数设置为最大值。defmy_max(a,b,*c):#求最大值max_value=aifmax_value<b:max_value=bforninc:ifmax_value<n:max_value=nreturnmax_valuedefmy_main():x=int(input("请输入第一个数:"))y=int(input("请输入第二个数:"))z=int(input("请输入第三个数:"))max1=my_max(x,y,z)print("最大数是:",max1)my_main()5.4变量的作用域(1)局部作用域:局部作用域一般是声明在函数内部的变量。>>>deffunc():
x=10
#函数内的局部变量x>>>print(x)
#x是局部变量,不能在函数func()外被访问(2)嵌套作用域:嵌套作用域和局部作用域是相对的,嵌套作用域相对于更上的层的函数而言也是局部作用域,嵌套作用域与局部作用域的区别在于对一个函数而言,局部作用域是定义在此函数内部的局部,而嵌套作用域是定义在此函数的上一层函数的局部。(3)全局作用域:全局作用域一般是在函数外部声明的变量,被为全局变量。全局变量的适用范围是整个.py文件。(4)内置作用域:系统中的内置模块所定义的变量,它包含了Python的各种预定义变量和函数。下面的程序中包含了4种作用域。a=int(2.6) #内置作用域a_count=0 #全局作用城defouter():
b_count=1
#局部作用域definner():
c_count=2
#嵌套作用域5.4变量的作用域5.4.1global关键字
当作用域外的变量与作用域内的变量名称相同时,以“本地”优先为原则,此时外部的变量会被屏蔽。5.4.2nonlocal关键字
当作用域外的变量与作用域内的变量名称相同时,以“本地”优先为原则,此时外部的变量会被屏蔽。实例七global关键字的使用。defe_count():num=10definner():nonlocalnum #nonlocal关键字声明num=100print(num)inner()print(num)e_count()5.5常用函数5.5.1lambda函数
lambda函数又被称为匿名函数,它没有复杂的函数定义格式,仅由一行代码构成,其基本格式如下。result=lambda[argl,arg2,arg3,…,argN]:expression
其中,result用于接收lambda函数的结果,[argl,arg2,arg3,…,argN]指的是可选参数,用于指定要传递的参数列表,参数间使用“,”分隔。expression为必选参数,它是一个表达式,用于描述函数的功能,如果函数有参数,那么将在这个表达式中使用。如使用1ambda函数求两数加和。实例八使用普通函数与lambda函数计算圆的面积。#普通函数importmathdefarea(r):result=math.pi*r*rreturnresultr=3print("使用普通函数计算圆面积是:",area(r))#lambda函数areal=lambdar:math.pi*r*rprint("使用lambda函数计算圆面积是:",area(r))5.5常用函数5.5.2zip()函数
zip()函数是Python的一个内置函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuple组成的list(列表)。其应用形式为:zip([iterable,...])。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。>>>x=zip()>>>print(list(x))输出结果为:[]从结果可以看出zip()函数在没有参数时运作的方式。>>>x=[1,2,3]>>>x=zip(x)>>>print(list(x))输出结果为:[(1,),(2,),(3,)]从结果可以看出zip()函数在只有一个参数时运作的方式。下面看看有多个参数的情况。>>>x=[1,2,3]>>>y=[4,5,6]>>>xy=zip(x,y)>>>foriinxy:>>>print(i,end=")输出结果为:(1,4)(2,5)(3,6)可见,zip()函数可以将几个列表中的元素,按次序组合成一个元组。如果将多个列表传入zip()函数中,也可以执行相同的操作,例如。>>>x=[1,2,3]>>>y=[4,5,6]>>>z=[7,8,9]>>>xyz=zip(x,y,z)>>>print(list(xyz))输出结果为:[(1,4.7),(2.5,8),(3,6.9)]当两个列表的长度不一样时,操作如下。>>>x=[1,2,3]>>>y=[4,5,6,7]>>>xy=zip(x,y)>>>print(list(xy))输出结果为:[(1,4),(2,5),(3,6)]从这个结果可以看出zip()函数的长度处理方式。【任务实现】任务二为公益事业做小贡献
中国福利彩票发行的目的是团结各界热心社会福利事业的人士,发扬社会主义人道主义精神,筹集社会福利资金,兴办残疾人、老年人、孤儿等福利事业和帮助有困难的人,具有鲜明的公益性。双色球是中国福利彩票中的一种。
本次的任务是使用Python编写双色球中奖程序,其中利用Python内置random模块随机生成某一期的双色球中奖号码。【提示】(1)根据双色球规则:6位不重复的蓝球,蓝球的选号范围:1~33,则生成蓝球号码时使用随机数模块,号码范围1~33,生成蓝球号码时要验证新生成的号码与已生成的号码是否重复,如果重复需重新生成,可以使用列表的append()方法保存蓝球号码,及用if语句判断元素是否重复。(2)根据双色球规则:1位红球,红球选号范围:1~16,则生成红球号码时使用随机数模块,号码范围:1~16。(3)根据双色球规则:蓝球依从小到大的顺序排列,则利用列表的sort()方法实现。5.6模块在程序开发过程中,开发人员不会将所有的代码都放到一个源程序文件中,而是将功能相近的类或函数放到一起,这样代码结构清晰,管理维护也方便,那么在Python中使用模块来管理实现,也即是我们之前所编写的Python文件就是一个模块,其扩展名是.py。在模块中可以定义函数、类和变量等可执行的代码。别的程序可以导入模块,以使用该模块中相应的方法。5.6模块5.6.1创建模块在Python中,模块的创建是以文件的方式来表示模块,一个模块就是一个以.py为扩展名的文件,文件的名字就是模块的名字,格式为“模块名.py”。如将两个数求和的函数程序文件保存在文件中,并命名为my_Add.py,就可以将其看作是一个模块,代码如下。defmy_Sum(a,b):returna+b5.6模块5.6.2导入模块
创建模块后,为了在别的程序中使用该模块中的变量、函数或类等,需要先导入该模块。可使用import或from语句导入模块,该导入语句可以在程序中的任意位置使用,基本格式如下。import模块名称import模块名称as新名称from模块名称import导入的对象名称from模块名称import导入的对象名称as新名称from模块名称import*5.6模块5.6.3模块属性
在模块中,有一些内置属性用于完成特定的任务,即使是自定义创建的模块,也会包含这些内置属性。利用dir()函数可以查看模块中的属性。5.6模块5.6.4导入模块搜索路径在导入模块时,Python会依次执行下列3个步骤。(1)搜索需要导入的模块文件。(2)必要时编译模块文件。(3)执行模块文件。5.7模块包5.7.1包的基本结构在编写程序的过程中,会创建许多的模块,为了防止各模块间名字的重复,也为了将某些功能相近的模块组织在同一个目录下,就需要运用包来管理。包可以简单理解为文件夹,导入使用包的方式跟使用模块类似,但需要注意的是,当把文件夹当作包使用时,文件夹中需要包含__init__.py文件,主要是为了避免将文件夹名当作普通的字符串。在__init__.py文件中,可以编写一些初始化代码,当包被导入时,__init__.py文件会自动执行,当然__init__.py也可以为空。。
Python中包、模块、函数、类和属性之间的关系如图5-2所示函数类属性模块1包函数类属性模块25.7.2导入包5.8常用内置模块介绍
Python语言的语法接近自然语言,因此在各个领域都有十分广泛的应用。同时,因为Python语言的开源性,开发了很多开源的第三方模块。其中一些使用场景广泛的模块被集成到了Python中,称为内置模块,其他未集成到Python中的模块称为第三方模块(库)。5.8常用内置模块介绍5.8.1绘图工具:turtle库1.turtle库的基本概念
turtle库(也称海龟绘图库)提供了基本绘图功能,是Python语言中一个很流行的绘制图像的函数库,想象一只小乌龟,在一个横轴为x、纵轴为y的坐标系原点(0,0)位置开始,根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制图形。5.8常用内置模块介绍5.8.1绘图工具:turtle库2.turtle绘图的基本知识点(1)画布(canvas)
画布指turtle用于绘图的区域,可以设置它的大小和初始位置。如设置画布大小turtle.screensize(canvwidth=None,canvheight=None,bg=None),(2)画笔
画笔的状态指在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。坐标原点(位置),面朝x轴正方向(方向),turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。5.8常用内置模块介绍5.8.1绘图工具:turtle库3.命令介绍样式turtle.circle(radius,extent=None,steps=None)描述:以给定半径画圆参数:radius指半径,半径的正(负),表示圆心在画笔的左边(右边)画圆;extent指弧度;steps指半径为radius的圆的内切正多边形,多边形边数为steps。示例:circle(50) #整圆circle(50,steps=3) #三角形circle(120,180) #半圆实例九利用turtle绘图一个五角星。importturtle #导入turtle模块中的函数turtle.color("red","yellow")#设置画笔颜色为red,填充颜色为yellowturtle.pensize(5) #设置画笔的宽度为5像素turtle.hideturtle() #隐藏画笔的turtle形状turtle.begin_fill()#开始填充whileTrue:turtle.forward(300) #画笔前进300像素turtle.right(144)#画笔方向向右旋转144度ifabs(turtle.pos())<1: #检查当前坐标breakturtle.end_fill() #结束填充turtle.speed(2) #设置画笔移动速度2turtle.penup()#提起笔移动,不绘制图形,用于另起一个地方绘制turtle.goto(-150,-130) #将画笔移动到坐标为x,y的位置turtle.color("green")#设置画笔颜色#写文本Python,文本字体名为Arial,大小为30和font为normalturtle.write("Python",font=("Arial",30,"normal"))turtle.mainloop()#开始事件循环。5.8常用内置模块介绍5.8.2随机数工具:random库1.random库概述
random库提供了随机数生成函数,其模块文件为Python安装目录下的Lib\random.py。各种程序设计语言中几乎都提供了随机数生成功能。程序设计语言通过随机数生成器来获得随机数。5.8常用内置模块介绍5.8.2随机数工具:random库2.random库方法(1)random()方法
random()方法用于返回随机生成的一个实数,随机数取值在[0,1)范围内。(2)randrange()方法
randrange()方法用于返回指定范围内按某一步长递增集合中的一个随机数,用法如下所示。
random.randrange(start,stop,step)
其中,start是指定范围内的开始值,包含在范围内,stop是指定范围内的结束值,但不包含在范围内,step是步长,步长默认值为1。5.8常用内置模块介绍5.8.2随机数工具:random库2.random库方法(3)uniform()方法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年教育服务体系优化措施分析
- 面馆顾客服务的岗位职责与技巧
- 海洋开发行业劳动力与设备配置计划范文
- 医院继续医学教育评估与反馈机制
- 高校科研项目自查及整改措施
- 学生安全意识提升工作计划
- 2025年重庆轻工职业学院单招职业倾向性测试题库含答案
- 2025年吉林省长春市单招职业适应性测试题库新版
- 新编快递合同6篇
- 代理记账业务合同6篇
- 脱口秀实战指南(如何从零开始写段子)
- 建筑工程挂靠协议模板
- 山东省济宁市2025年高考模拟考试(一模)思想政治试题(含答案)
- 第十八届“地球小博士”全国地理知识科普竞赛题库(附答案)
- 第五课 认识情绪 管理情绪
- 四年级数学下册三角形及四边形的角度计算培优专项练习(含答案)
- SJG 82-2020 政府投资学校建筑室内装修材料空气污染控制标准-高清现行
- 智慧园区平台用户操作手册
- 精品市政道路施工测量方法及测量方案
- 小型手推清扫车毕业设计说明书课件
- 受拉钢筋抗震锚固长度Lae
评论
0/150
提交评论