python实用教程-第七章-函数课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《python实用教程-第七章-函数课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- python 实用教程 第七 函数 课件
- 资源描述:
-
1、第七章 函 数 函数能够提高应用的模块性和代码的重复利用率。Python提供了许多内建函数,开发者也可以自己创建函数。Python快乐学习班的同学结束旋转乐园的游玩后,导游带领他们来到函数乐高积木厅,在函数乐高积木厅,同学们只要通过想象和创意,就可以使用手中的代码块拼凑出很多神奇的函数,它们有不带参数的,有带必须参数的,有带关键字参数的,有带默认参数的,有带可变参数的,有带组合参数的。现在陪同Python快乐学习班的同学一起进入函数乐高积木厅,开始我们的创意学习之行。7.1 函数的定义 函数这个概念在前面的章节中已经提到过很多次,也已经使用过函数。不过到目前为止,我们用的都是Python内置函
2、数。这些Python内置函数的定义部分对我们来说是透明的。因此,我们只需关注这些函数的用法,而不必关心函数是如何定义的。Python支持自定义函数,即由我们自己定义一个实现某个功能的函数。下面是自定义函数的简(1)函数代码块以def关键字开头,后接函数标识符名称和圆括号“()”。(2)所有传入的参数和自变量都必须放在圆括号中,可以在圆括号中定义参数。(3)函数的第一行语句可以选择性地使用文档字符串,用于存放函数说明。(4)函数内容以冒号开始,并且要缩进。(5)return 表达式 用于结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。单规则。Python定义函
3、数使用def关键字,一般格式如下:def 函数名(参数列表):函数体 或者更直观的表示为:def(arg1,arg2,.argN):函数的名字必须以字母开头,可以包括下画线“_”。和定义变量一样,不能把Python的关键字定义成函数的名字。函数内的语句数量是任意的,每个语句至少有一个空格的缩进,以表示该语句属于这个函数。函数体必须保持缩进一致,因为在函数中,缩进结束就表示函数结束。7.2 函数的调用 在程序设计中,函数是指用于进行某种计算的一系列语句的有名称的组合。定义一个函数时,需要指定函数的名称并写下一系列程序语句。之后就可以使用名称来“调用”这个函数。前面我们已经见过函数调用的例子,如下
4、示例:print(hello world)hello world type(hello)int(12.1)12 Python3内置了很多有用的函数,我们可以直接调用。要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数。可以直接从Python的官方网站查看文档:https:/docs.python.org/3/library/functions.html 除了到Python官网查看文档,还可以在交互式命令行通过help(abs)查看abs函数的帮助信息。在交互模式下输入:help(abs)Help on built-in function abs in module
5、 builtins:abs(x,/)Return the absolute value of the argument.调用Python的函数,需要根据函数定义,传入正确的参数。函数定义时需要注意几点:(1)如果没有return语句,函数执行完毕后也会返回结果,只是结果为None。(2)return None可以简写为return。(3)在Python中定义函数时,需要保持函数体中同一层级代码的缩进一致。在一个函数中可以定义多条语句,并且在函数中能做各种赋值、运算、调用其他函数等操作,并返回结果。如可以定义输出多条语句的函数并执行(print_more.py):def print_more()
6、:print(该函数可以输出多条语句,我是第一条。)print(我是第二条)print(我是第三条)print_more()#调用函数 程序输出结果如下:该函数可以输出多条语句,我是第一条。我是第二条 我是第三条 在Python中,可以定义一个什么都不做的函数。如果想定义一个什么都不做的空函数,可以用pass语句,定义如下函数并执行(do_nothing.py):def do_nothing():pass do_nothing()pass语句什么都不做,这样有什么用呢?此处pass可以作为占位符使用,比如现在还没想好怎么写函数的代码,可以先放一个pass,让代码能运行起来。函数的目的是把一些复
7、杂操作隐藏起来,用于简化程序的结构,使程序更容易阅读。函数在调用前必须先定义。7.3 函数的参数 我们在7.1节中讲述了如何定义函数,但讲述的是定义简单的函数,还有一类函数是带有参数的,称为带参数的函数。本节将探讨如何定义带参的函数及其使用。调用函数时可以使用以下参数类型:(1)必须参数。(2)关键字参数。(3)默认参数。(4)可变参数。(5)组合参数。7.3.1 必须参数 必须参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。def param_one(str):print(the param is:,str)print(我是一个传入参数,我的值是:,str)Param_one(h
8、ello,world)代码中定义了一个必须传入一个参数的函数param_one(str),其传入参数为str,结果即是将hello,world这个值传给str。对于上面的示例,假如不传入参数或传入一个以上的参数,结果会怎样呢?操作如下:param_one()#不传入参数 程序输出结果如下:Traceback(most recent call last):File param_one.py,line 7,in param_one()#不传入参数 TypeError:param_one()missing 1 required positional argument:val_str 由输出结果可以看
9、到,程序报错:函数缺少一个必须的定位参数,参数为val_str。在实际项目应用中,若定义函数时需要定义的参数个数较少,建议定义成必须参数形式的函数。7.3.2 关键字参数 函数调用使用关键字参数来确定传入的参数值。使用关键字参数Python 解释器能够用参数名匹配参数值。def person_info(age,name):print(f年龄:age)print(f名称:name)return print(-按参数顺序传入参数-)person_info(21,小萌)print(-不按参数顺序传入参数,指定参数名-)person_info(name=小萌,age=21)print(-按参数顺序传入
10、参数,并指定参数名-)person_info(age=21,name=小萌)调用函数,输出结果如下:-按参数顺序传入参数-年龄:21 名称:小萌-不按参数顺序传入参数,指定参数名-年龄:21 名称:小萌-按参数顺序传入参数,并指定参数名-年龄:21 名称:小萌 在实际项目应用中,使用关键字参数的形式调用函数是不错的做法。7.3.3 默认参数 调用函数时,如果没有传递参数,则会使用默认参数。所谓使用默认参数,就是我们在定义函数时,给参数一个默认值,当没有给调用该函数时的该参数赋值时,调用的函数就使用这个默认的值。定义如下函数并执行(default_param.py):def default_pa
11、ram(name,age=23):print(hi,我叫:,name)print(我今年:,age)return default_param(小萌)调用函数,输出结果如下:hi,我叫:小萌 我今年:23 在一个函数定义中,是否可以定义多个默认参数?先看看以下几个函数定义的示例。(1)示例1:多个默认参数值(default_param_test.py)(2)示例2:默认参数在必须参数前(default_param_try.py)由示例1和示例2,得到如下结论。对于默认参数:(1)不管有多少个默认参数,默认参数都不能在必须参数之前。(2)不管有多少个默认参数,若不传入默认参数值,都会使用默认值。(
12、3)若要更改某一个默认参数的值,而不想传入其他默认参数,且其位置不是第一个默认参数,可以通过参数名来更改想要更改的默认参数的值。(4)若有一个默认参数是通过传入参数名更改参数值,则其他任何想要更改的默认参数都需要传入参数名来更改参数值,否则报错。(5)更改默认参数的值时,传入默认参数的顺序不需要根据定义的函数中的默认参数的顺序进行传入,不过最好同时传入参数名,否则容易出现执行结果与预期不一致的情况。7.3.4 可变参数 可变参数的基本语法如下:def functionname(formal_args,*var_args_tuple):函数_文档字符串 function_suite return
13、 expression 加了星号(*)的变量名会存放所有未命名的变量参数。如果变量参数在函数调用时没有指定参数,它就是一个空元组。我们也可以不向可变函数传递未命名的变量。如果需要一个函数能处理比当初声明时更多的参数,这些参数叫做可变参数,和前面所述两种参数不同,可变函数声明时不会命名。通过实例来说明可变函数的使用,定义如下函数并执行(person_info_var.py):def person_info_var(arg,*vartuple):print(arg)for var in vartuple:print(f我属于不定长参数部分:var)return print(-不带可变参数-)per
14、son_info_var(小萌)print(-带两个可变参数-)person_info_var(小萌,21,beijing)print(-带5个可变参数-)person_info_var(小萌,21,beijing,123,shanghai,happy)执行以上代码段,由输出结果可以看到,虽然在定义函数时只定义了两个参数,但调用时却可以传入多个参数,这和之前函数的调用不一样了,这是怎么实现的?这就是可变参数的好处,在函数内部,若在参数前加一个星号,在函数调用时,会将所有参数放在一个元组中,通过这种方式将这些值收集起来,然后供函数内部使用。如在函数person_info_var()中,参数var
15、tuple接收的是一个元组,调用函数时可以传入任意个数的参数,也可以不传。在这个示例中使用了前面所学的for循环,通过for循环遍历元组。通过这种方式定义函数,调用时是不是非常方便?我们在后续学习中会经常遇到。7.3.5 组合参数 在Python中定义函数,可以用必须参数、关键字参数、默认参数和可变关键字参数,这4种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必须参数、默认参数、可变参数和关键字参数。下面我们来介绍组合参数的使用,请看如下函数定义:def exp(p1,p2,df=0,*vart,*kw):print(p1=,p1,p2=,p2,df=,df,vart=,vart,k
16、w=,kw)exp(1,2)exp(1,2,c=3)exp(1,2,3,a,b)exp(1,2,3,abc,x=9)执行以上py文件,由输出结果可以看到,在定义exp()函数时,使用了组合参数的定义形式,Python解释器会自动按照参数位置和参数名把对应的参数传进去。对exp()函数,还可传入tuple和dict类型的参数,方式如下:args=(1,2,3,4)#args定义为tuple kw=x:8,y:9#kw定义为dict exp(*args,*kw)执行py文件,输出结果如下:p1=1,p2=2,df=3,vart=(4,),kw=y:9,x:8 由输出结果可以看到,任意函数都可以通过
17、类似func(*args,*kw)的形式进行调用,无论参数是如何定义的。7.4 形参和实参 前面已经讲述过函数的参数,本节将给大家介绍Python函数的两种类型参数,一种是函数定义里的形参,一种是调用函数时传入的实参。经常在使用一些内置函数的时候,我们需要传入参数,比如:调用math.sin时,需要传入一个整型数字作为实参,还有的函数需要多个参数,像math.pow就需要2个参数,一个是基数(base)和指数(exponent)。在函数内部,会将实参的值赋给形参,例如(basic_info.py):def basic_info(age,name):print(f年龄:age)print(f名称
展开阅读全文