1、第6章 函数本章内容o6.1 使用函数的优势o6.2 调用内置函数o6.3 定义函数o6.4 函数的参数o6.5 有返回值的函数和无返回值的函数o6.6 形参和实参o6.7 变量作用域o6.8 返回函数o6.9 递归函数o6.10 匿名函数o6.11 偏函数o6.12 函数的内置属性和命名空间o6.13 输入和输出函数6.1 使用函数的优势o 使用函数的优势如下:o(1)开发者可以将常用的功能需求开发成函数,这样便于重复使用,让程序代码的总行数更少,之后修改代码的工作量也大大减少了。o(2)通过将一组语句封装成函数,成为一个代码块,这样更有利于调试和后期的修改,同时也便于阅读和理解代码。o(3
2、)将一个很长的代码可以拆分为几个函数,然后对每个函数单独调试,单个函数调试通过后,再将它们重新组合起来即可。6.2 调用内置函数o加载Python解释器之后,读者就可以直接使用内置函数。o下面将讲述常见内置函数的使用方法。o abs(x):返回数值x的绝对值,如果x是复数的话,abs()函数会返回该复数的大小(实数部分的平方加上虚数部分的平方,再开根号)。o chr(i):i是ASCII字符码(0255),chr()函数返回数值i的单字符字符串。chr()函数与ord()函数作用相反。o complex(real,imag):创建一个复数,其值为real+imag*j。如果第一个参数为字符串,
3、则不需要指定第二个参数。o dir(object):返回object对象的属性名称列表。如果没有指定参数object,则会返回现有的区域符号表(Local Symbol Table)。6.3 定义函数o 根据实际工作的需求,用户可以自己创建函数,也就是用户自定义函数。o Python的函数定义方法是使用def关键字,语法格式如下所示:o def 函数名称(参数1,参数2,.):o 文件字符串o o 文件字符串是可省略的,用来作为描述此函数的字符串。如果文件字符串存在的话,它必须是函数的第1个语句。6.4 函数的参数o 6.4.1 必需参数o 6.4.2 关键字参数o 6.4.3 默认参数o 6
4、.4.4 可变参数6.4.1 必需参数o 必需参数要求用户必须以正确的顺序传入函数。调用时的数量必须和声明时的一样,设置函数的参数时须依照它们的位置排列顺序。例如:o def gg(x,y):o return x-yo o gg(200,50)6.4.2 关键字参数o用户可以直接设置参数的名称与其默认值,这种类型的参数属于关键字参数。o设置函数的参数时可以不依照它们的位置排列顺序。因为 Python 解释器能够用参数名匹配参数值。例如:o def gg(x,y):o return x-yo o gg(200,100)#按参数顺序传入参数o gg(x=200,y=100)#按参数顺序传入参数,并
5、指定参数名o gg(y=100,x=200)#不按参数顺序传入参数,并指定参数名6.4.3 默认参数o调用函数时,如果没有传递参数,则会使用默认参数值。例如:odef gg(name,price=6000):o 输出商品价格信息o print(名称:,name)o print(价格:,price)o returno ogg(name=冰箱,price=3880)#传递参数,不使用默认参数值ogg(name=洗衣机)#没有传递price参数值,使用默认参数值 6.4.4 可变参数o 如果用户在声明参数时不能确定需要使用多少个参数,可以使用可变参数。可变参数不用命名。基本语法如下:o def fu
6、nctionname(formal_args,*var_args_tuple):o 函数_文档字符串o function_suiteo return expression6.5 有返回值的函数和无返回值的函数o return语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。o def sum(count,price):o 输出商品总价格o total=count*priceo print(商品总价格:,total)o return totalo sum(15,4.6)6.6 形参和实参o 函数的参数分为形参和实参两种。形参出现在函数定义中,在整个函数体
7、内都可以使用,离开该函数则不能使用;实参再调用函数时传入。o 1.形参与实参的概念o 2.参数的功能o 3.形参和实参的特点:6.7 变量作用域o 在函数之外定义的变量属于全局变量,用户可以在函数内使用全局变量。例如:o x=100o def get(y=x+100):o return yo get()6.8 返回函数o下面通过案例学习返回函数的用法。odef f1(c,f):o def f2():o return f(c)o return f2o#调用f1函数时,返回的是f2函数对象of1(-100,abs)om=f1(-100,abs)om()#需要对m()调用才能得到求绝对值的结果6.9
8、 递归函数o 6.9.1 使用递归函数o 6.9.2 利用递归函数解决汉诺塔问题o 6.9.3 防止栈溢出6.9.1 使用递归函数o 递归是指在函数的执行过程中再次对自己进行调用。例如:o def f()o o y=f();o return y;o 6.9.2 利用递归函数解决汉诺塔问题6.9.3 防止栈溢出o 使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。6.10 匿名函数o 所谓匿名,即不再使用def语句这样
9、标准的形式定义一个函数。Python使用lambda创建一个匿名函数。o 下面举个简单的例子。定义一个返回参数之和的函数。o def f(x,y):o return x+yo 用户的函数只有一个表达式,就可以使用lambda运算符来定义这个函数。o f=lambda x,y:x+y6.11 偏函数oPython的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。要注意,这里的偏函数和数学意义上的偏函数不一样。o在介绍函数参数的时候,通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以做到这一点。o举例如下:oint()函数可以把字符串转
10、换为整数,当仅传入字符串时,int()函数默认按十进制转换:o int(2888)o 但int()函数还提供额外的base参数,默认值为10。如果传入base参数,就可以做N进制的转换:o int(123456,base=8)o int(123456,16)#base也可以省略,直接传入base的值6.12 函数的内置属性和命名空间o 函数有许多的内置属性,用户可以在Python解释器内输入dir(函数名称),即可以显示这些内置属性。o def myfunction():o returno o dir(myfunction)6.13 输入和输出函数o Python的内置函数input()和print()函数用于输入和输出数据。下面将讲述这两个函数的使用方法。o 1.input()函数o 2.print()函数
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。