Python语言程序设计(第二版) 课件 5 Python函数与模块_第1页
Python语言程序设计(第二版) 课件 5 Python函数与模块_第2页
Python语言程序设计(第二版) 课件 5 Python函数与模块_第3页
Python语言程序设计(第二版) 课件 5 Python函数与模块_第4页
Python语言程序设计(第二版) 课件 5 Python函数与模块_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

Python函数与模块代码复用函数与模块前面我们曾经使用过函数和模块:模块:math、random……函数:int、float、str、eval、print、input、pow、round……函数:一些经常重复使用的程序代码定义为函数,方便重复调用执行,以提高程序的模块化和代码的重复利用率。函数对大型程序的开发是很有用的。分为系统函数和用户自定义函数。提高代码重用率。模块(module):是Python最高级別的程序组织单元,比函数颗粒度更大,一个模块可以包含若干个函数。分系统模块和用户自定义模块,用户自定义的一个模块就是一个.py程序文件。自定义函数Python的函数由函数名、参数和函数体组成。格式如下:def<函数名>([形式参数列表]): <执行语句> #函数体 [return<返回值>]例如:defmyfunc(x,y): returnx+y

或print(x+y)注意:关键字def;函数的命名原则与变量命名相同;使用缩进表示与函数体的隶属关系;不需要声明其返回类型,也不需要声明参数的传入类型。函数的调用调用:程序中直接写函数名和相应参数即可。例如:defmyfunc(x,y): #函数定义,x,y是形参

returnx+ya,b=2.5,3.6c=myfunc(a,b)#函数调用,a和b为实参print(a,b,c)函数的参数形参:函数定义时,用来接收调用该函数时传入的参数称为形式参数(parameter),简称形参。实参:调用函数时,实际传递给函数的参数称为实际参数(argument),简称实参。函数调用时发生参数传递,提供的实际参数应与被调用函数的形式参数按顺序一一对应,而且参数类型要兼容。举例1、编制求圆的面积的函数2、编制求n!的函数函数定义函数调用参数传递方式按值传递——单项传递defchange(number,string,lst):number=5string='GoodBye'lst=[4,5,6]print("Inside:",number,string,lst)num=10string='hello'lst=[1,2,3]print('Before:',num,string,lst)change(num,string,lst)#调用print('After:',num,string,lst)程序运行结果如下:Before:10hello[1,2,3]Inside:5GoodBye[4,5,6]After:10hello[1,2,3]参数传递方式(2)传递列表、字典等可变对象(按地址传递)——可修改可改变对象的值defchange(lst):lst[0]=10print("Insidelst={}".format(lst))lst=[1,2,3,4,5]print("Beforelst={}".format(lst))change(lst)print("Afterlst={}".format(lst))程序运行结果如下:Beforelst=[1,2,3,4,5]Insidelst=[10,2,3,4,5]Afterlst=[10,2,3,4,5]参数传递方式如交换两个数的问题,可以采用以下程序:defswap(lst):lst[0],lst[1]=lst[1],lst[0]lst1=list(eval(input("输入要交换的数字:")))swap(lst1)print(lst1)程序运行结果如下:10,20[20,10]从语句执行结果可知,swap()函数实现了数据的交换。(3)传递不可变对象元组(按地址传递)参数的类型1.关键字参数实参的数目应与形参完全匹配。例如,调用函数mysum(),一定要传递两个参数,否则会出现一个语法错误。defmysum(x,y): returnx+ymysum(5,4)参数的类型2.默认值参数定义时可指定默认值,“形参变量名=参数值”,当实参没有值时就用默认值。defdisplay(a=“hello”,b=“world”):print(a+b)#主程序display()#都取默认值输出:helloworlddisplay(b=“!!!”)#a取默认值输出:hello!!!display(a=“你好”)#b取默认值输出:你好worlddisplay(“!!!”)#未指定参数名,从左到右传递匹

配输出:!!!world参数的类型3.任意个数参数,(元组类型变长参数传递)参数名称前面加一个星号“*”,则表示参数是一个元组类型可变长参数。需要放在必须复制的参数之后。例如:d是固定参数*dtup表示一个元组例5.3带元组类型变长参数的函数调用示例defprintse_series(d,*dtup):print('必须参数:',d)iflen(dtup)!=0:print('元组参数:',end='')foriindtup:print(i,end='')printse_series(10)printse_series(10,20,30,40)运行结果为:必须参数:10必须参数:10元组参数:203040注意:所有其他类型的形式参数,必须在可变参数之前出现。函数中变量的作用域指在程序中能够对该变量进行读/写操作的范围。变量分为:函数中定义的变量(Local,简称L)嵌套中父级函数的局部作用域变量(Enclosing,简称E)模块级别定义的全局变量(Global,简称G)内置模块中的变量(Built-in,简称B)优先级由高到低:LEGB。同名变量出现在不同的函数体中,不相互干扰,能相互访问;相同命名标识的变量在同一个函数体中或具有函数嵌套关系时,按优先级进行访问。函数中变量的作用域——LEGB例5.6变量作用域测试x=0 #global模块中定义的全局变量defouter():

x=1 #enclosing局部变量definner():

x=2 #local,函数中定义的print('local:x=',x) #x=2inner()print('enclosing:x=',x) #x=1outer()print('global:x=',x) #x=0模块1.标准库模块标准库模块是Python自带的函数模块,也称为标准链接库。Python提供了大量的标准库模块,实现了很多常见功能,包括数学运算、字符串处理、操作系统功能、网络和Internet编程、图形绘制、图形用户界面创建,等等,这些为应用程序开发提供了强大支持。标准库模块并不是Python语言的组成部分,而是由专业开发人员预先设计好并随语言提供给用户使用的。用户可以在安装了标准Python系统的情况下,通过导入命令来使用所需要的模块。用户自定义模块2.用户自定义模块用户自定义一个模块就是建立一个Python程序文件,其中包括变量、函数的定义。下面是一个简单的模块,程序文件名为support.py。defprint_func(par): print("Hello:",par)一个Python程序可通过导入一个模块而读取这个模块的内容。import模块名1[,模块名2[……,模块名n]]例如:importsupport#导入模块support.print_func(“Brenden”)#调用模块函数自定义模块应用例5.11创建一个fibo.py模块,其中包含两个求Fibonacci数列的函数,然后导入该模块并调用其中的函数。创建一个fibo.py模块。deffib1(n):a,b=0,1whileb<n:print(b,end='')a,b=b,a+bprint()deffib2(n):a1,b1=0,1result=[]whileb1<n:result.append(b1)a1,b1=b1,a1+b1returnresult模块中函数使用importfibo.pyfibo.fib1(1000)结果:1123581321345589144233377610987fibo.fib2(100)结果:[1,1,2,3,5,8,13,21,34,55,89]Python程序结构Python程序:一个或多个程序文件,每个程序文件就是一个.py源程序文件。一个主程序+多个模块组成。(模块也是程序)主程序定义了程序的主控流程,是执行程序时的启动文件,属于顶层文件。模块则是函数库,相当于子程序。模块是用户自定义函数的集合体,主程序可以调用模块中定义的函数来完成应用程序的功能,还可以调用标准库模块,同时模块也可以调用其他模块或标准库模块定义的函数。Python程序结构示例假设一个由三个程序文件a.py、b.py和c.py组成的Python程序结构,其中a.py是主程序,b.py和c.py是模块。a调用b、c,c调用b。程序从a开始执行。importmathdefhello(person): print("Hello",person)defbye(person): print("Bye",person)defdisp(r): print(math.pi*r*r)importb,cb.hello("Jack")b.bye("Jack")c.show(10)importbdefshow(n):b.disp(n)模块b模块c主程序a函数&模块应用举例分析:定义一个函数求累加项,循环控制累加100次。程序如下:defmy_fun(n,m):t=0foriinrange(1,n+1):t+=i**mreturnts=my_fun(100,1)+my_fun(50,2)+my_fun(10,-1)print(s)

例5.14设计一个程序,求同时满足下列两个条件的分数x的个数:(1)1/6<x<1/5(2)x的分子、分母都是素数且分母是2位数。分析:设x=m/n,根据条件(2),有10≤n≤99;根据条件(1),有5m≤n≤6m,并且n、m均为素数。用穷举法来求解这个问题,并设计一个函数来判断一个数是否为素数,若是素数则返回值True,否则为False。函数&模块应用举例frommathimport*defisprime(n):forjinrange(2,int(sqrt(n)+1)):ifn%j==0:returnFalsebreakreturnTruedefmain():count=0forninrange(11,100):ifisprime(n):

温馨提示

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

评论

0/150

提交评论