Python基础教程第3章_第1页
Python基础教程第3章_第2页
Python基础教程第3章_第3页
Python基础教程第3章_第4页
Python基础教程第3章_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

,Python程序设计教程,授课教师:职务:,第3章Python函数,课程描述函数(function)由若干条语句组成,用于实现特定的功能。函数包含函数名、若干参数和返回值。一旦定义了函数,就可以在程序中需要实现该功能的位置调用该函数,给程序员共享代码带来了很大方便。在Python语言中,除了提供丰富的系统函数(本书前面已经介绍了一下常用的系统函数)外,还允许用户创建和使用自定义函数。,本章知识点,3.1声明和调用函数3.2参数和返回值3.3Python内置函数,3.1声明和调用函数,3.1.1自定义函数3.1.2调用函数3.1.3变量的作用域3.1.4在调试窗口中查看变量的值,3.1.1自定义函数,可以使用def关键字来创建Python自定义函数,其基本语法结构如下:def函数名(参数列表):函数体参数列表可以为空,即没有参数;也可以包含多个参数,参数之间使用逗号(,)分隔。函数体可以是一条语句,也可以由一组语句组成。,【例3-1】,创建一个非常简单的函数PrintWelcome,它的功能是打印字符串“欢迎使用Python”,代码如下:defPrintWelcome():print(欢迎使用Python);,【例3-2】,定义函数PrintString(),通过参数决定要打印的内容。defPrintString(str):print(str);变量str是函数的参数。在函数体中,参数可以像其他变量一样被使用。可以在函数中定义多个参数,参数之间使用逗号分隔。,【例3-3】,定义一个函数sum(),用于计算并打印两个参数之和。函数sum()包含两个参数。参数num1和num2,代码如下:defsum(num1,num2):print(num1+num2);,3.1.2调用函数,可以直接使用函数名来调用函数,无论是系统函数还是自定义函数,调用函数的方法都是一致的。,【例3-4】,defPrintWelcome():print(欢迎使用Python);PrintWelcome();,【例3-5】,defPrintString(str):print(str);PrintString(传递参数);,【例3-6】,defsum(num1,num2):print(num1+num2);sum(1,3);,3.1.3变量的作用域,在函数中也可以定义变量,在函数中定义的变量被称为局部变量。局部变量只在定义它的函数内部有效,在函数体之外,即使使用同名的变量,也会被看作是另一个变量。相应地,在函数体之外定义的变量是全局变量。全局变量在定义后的代码中都有效,包括它后面定义的函数体内。如果局部变量和全局变量同名,则在定义局部变量的函数中,只有局部变量是有效的。,【例3-7】,a=100;#全局变量defsetNumber():a=10;#局部变量print(a);#打印局部变量asetNumber();print(a);#打印全局变量$a,3.1.4在调试窗口中查看变量的值,1设置断点2单步调试,1设置断点,断点是调试器的功能之一,可以让程序中断在需要的地方,从而方便对其进行分析。用鼠标右击要设置断点的程序行,在快捷菜单里选择SetBreakpont菜单项,会在当前行设置断点,该行代码会显示黄色背景。,2单步调试,设置断点后,运行程序,可以停在断点处,然后一条语句一条语句的单步运行。单步调试可以看到程序的运行过程,同时可以查看在某一时刻某个变量的值。下面介绍在IDLE中单步调试程序的方法。例如在IDLE中打开例3-7.py,然后在菜单中选择Run/PythonShell,打开PythonShell窗口。在PythonShell的菜单中,选择Debug/Debugger,PythonShell窗口中会出现下面文字,DEBUGON同时打开DebugControl窗口,程序停留在第1行,程序停留在断点处,3.2参数和返回值,3.2.1在函数中传递参数3.2.2函数的返回值,3.2.1在函数中传递参数,1普通参数Python实行按值传递参数。值传递指调用函数时将常量或变量的值(通常称其为实参)传递给函数的参数(通常称其为形参)。值传递的特点是实参与形参分别存储在各自的内存空间中,是两个不相关的独立变量。因此,在函数内部改变形参的值时,实参的值一般是不会改变的。6.1.2小节介绍的实例都属于按值传递参数的情况。,【例3-8】在函数中按值传递参数的例子,deffunc(num):num+=1;a=10func(a);print(a);,【例3-9】分别打印形参和实参的地址,deffunc(num):print(形参num的地址,id(num)a=10func(a);print(实参a的地址,id(a);运行结果如下:形参num的地址1557053600实参a的地址1557053600,2列表和字典参数,【例3-10】使用列表作为函数参数的例子。defsum(list):total=0;forxinrange(len(list):print(listx,+);total+=listx;print(=,total);list=15,25,35,65sum(list);,运行结果,15+25+35+65+=140,【例3-11】使用字典作为函数参数的例子,defprint_dict(dict):for(k,v)indict.items():printdict%s=%k,vdict=a:apple,b:banana,g:grape,o:orangeprint_dict(dict);,运行结果,dicto=orangedictg=grapedicta=appledictb=banana,【例3-12】在函数中修改列表参数的例子,defswap(list):temp=list0list0=list1list1=templist=1,2print(list)swap(list)print(list),运行结果,1,22,1,【例3-13】在函数中修改字典参数的例子,defchangeA(dict):dicta=1d=a:10,b:20,c:30changeA(d)print(d),运行结果,c:30,a:1,b:20,3参数的默认值,在Python中,可以为函数的参数设置默认值。可以在定义函数时,直接在参数后面使用“=”为其设置默认值。在调用函数时可以不指定拥有默认值的参数的值,此时在函数体中以默认值作为该参数,【例3-14】设置参数默认值的例子,defsay(message,times=1):print(message*times)say(hello)say(Python,3)函数say()有2个参数:message和times。其中times的默认值为1。运行结果如下:helloPythonPythonPython,【例3-15】,deffunc1(a=1,b,c=10):d=a+b*c;func(10,20,30),【例3-15】的运行结果,4可变长参数,Python还支持可变长度的参数列表。可变长参数可以是元祖或字典。当参数以*开头时,表示可变长参数将被视为一个元祖,格式如下:deffunc(*t):在func()函数中t被视为一个元祖,使用tindex获取每一个可变长参数。可以使用任意多个实参调用func()函数,例如:func(1,2,3,4),【例3-16】以元祖为可变长参数的实例,deffunc1(*t):print(可变长参数数量如下:)print(len(t)print(依次为:)forxinrange(len(t):print(tx);func1(1,2,3,4);运行结果如下:可变长参数数量如下:4依次为:1234,【例3-17】使用可变长参数计算任意个指定数字之和,defsum(*t):sum=0;forxinrange(len(t):print(str(tx)+);sum+=tx;print(=+str(sum);sum(1,2);sum(1,2,3,4);sum(11,22,33,44,55);,结果如下,1+2+3+4+=1011+22+33+44+55+=1651+2+3+4+=10,【例3-18】,defsum(*t):sum=0;forxinrange(len(t):print(str(tx)+);sum+=tx;iflen(t)0:print(=+str(sum);sum();,【例3-19】,defsum(*t):print(t);sum(a=1,b=2,c=3);运行结果如下:a:1,c:3,b:2,3.2.2函数的返回值,对【例3-6】中的sum()函数进行改造,通过函数的返回值返回相加的结果,代码如下:defsum(num1,num2):returnnum1+num2;print(sum(1,3);运行结果为4。,【例3-21】,deffilter_even(list):list1=;foriinrange(len(list):iflisti%2=0:list1.append(listi)i-=1;returnlist1;list=1,2,3,4,5,6,7,8,9,10list2=filter_even(list)print(list2);,3.3Python内置函数,3.3.1数学运算函数3.3.2字符串处理函数3.3.3其他常用内置函数,3.3.1数学运算函数,【例3-22】,print(abs(-1);print(round(80.23456,2)print(pow(2,3)print(divmod(8,3);运行结果如下:180.238(2,2),3.3.2字符串处理函数,1字符串中字符大小写的变换,【例3-23】,str1=helloworld;str2=HELLOWORLD;str3=Helloworld;print(str1.upper();print(str2.lower();print(str3.swapcase()print(str3.swapcase()print(str1.capitalize();print(str2.title();,运行结果,HELLOWORLDhelloworldhELLOWORLDhELLOWORLDHelloworldHelloWorld,2指定输出字符串时的对齐方式,【例3-24】,str1=helloworld;print(str1.ljust(30,*);print(str1.rjust(30,*);print(str1.center(30,*)print(str1.zfill(30)运行结果如下:helloworld*helloworld*helloworld*0000000000000000000helloworld,3搜索和替换,【例3-25】,str1=helloworldPython;list1=str1.split();print(list1);str1=helloworldnPython;list1=str1.splitlines();print(list1);list1=hello,world,Pythonstr1=#print(str1.join(list1)运行结果如下:hello,world,Pythonhelloworld,Pythonhello#world#Python,5字符串判断相关,【例3-27】,tr=pythonStringfunctionprint(str+.startwith(t)的结果)print(str.startswith(t)print(str+.endwith(d)的结果)print(str.endswith(d)print(str+.isalnum()的结果)print(str.isalnum()str=pythonStringfunctionprint(str+.isalnum()的结果)print(str.isalnum()print(str+.isalpha()的结果)print(str.isalpha()print(str+.isupper()的结果)print(str.isupper()print(str+.islower()的结果)print(str.islower()print(str+.isdigit()的结果)print(str.isdigit()str=3423print(str+.isdigit()的结果)print(str.isdigit(),运行结果如下:,pythonStringfunction.startwith(t)的结果FalsepythonStringfunction.endwith(d)的结果FalsepythonStringfunction.isalnum()的结果FalsepythonStringfunction.isalnum()的结果TruepythonStringfunction.isalpha()的结果TruepythonStringfunction.isupper()的结果FalsepythonStringfunction.islower()的结果FalsepythonStringfunction.isdigit()的结果False3423.isdigit()的结果True,3.3.3其他常用内置

温馨提示

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

评论

0/150

提交评论