PYTHON程序设计 课件 【ch05】函数_第1页
PYTHON程序设计 课件 【ch05】函数_第2页
PYTHON程序设计 课件 【ch05】函数_第3页
PYTHON程序设计 课件 【ch05】函数_第4页
PYTHON程序设计 课件 【ch05】函数_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

函数“计算机类精品系列教材Python程序设计第五章01函数定义一、函数定义在Python中,函数通过关键字def定义,它是define的缩写。关键字def后加函数的名称和一对圆括号,圆括号之中可以根据实际需要定义函数的参数,以冒号结尾。下一行带有缩进的语句块为函数体。函数定义的语法结构如下:def函数名(参数列表);函数体在定义函数时,函数的名称应该能够表达函数封装代码的功能,方便后续的调用,并且函数名称的命名应该符合标识符的命名规则。函数的参数列表根据实际需要可有可无。函数使用return语句返回值,return后面的表达式或值为这次函数调用的返回值。如果函数没有使用return语句返回,则函数的返回值为None。如果return后面没有任何表达式,则调用这个函数的返回值也为None。一、函数定义例如:此外,return语句可以返回多个值。此时,Python会将多个值转换为元组返回,接收返回值时可以使用一个变量来保存返回的元组值,也可以使用和返回值个数相同的多个变量分别接收对应的返回值。一、函数定义例如,下面的代码定义了一个求一个列表中的最大值和最小值的函数。上面代码中的两种调用方式得到了相同的结果,但使用多个变量接收多个返回值的方式使得代码的可读性更好。02函数调用二、函数调用在调用函数时,程序的运行将从调用函数的行跳到函数定义的行,并将参数传递到函数体内。在函数运行结束后,程序将继续执行函数调用的下一条语句。例如:上面代码在运行时,首先会记住函数定义的名称,跳过函数体,向下运行。在运行到b=times2(a)时,将携带a的参数值,跳到times2()函数处,将a的值赋给x,并在函数体内完成运算。函数运行结束后,返回值赋给b,程序将继续执行调用函数的下一条语句。在本例中,调用完times2()函数后,将继续执行print(b)语句。二、函数调用此外,在Python中,也可以在表达式或函数中调用自定义函数。例如:03函数的参数传递三、函数的参数传递01形式参数与实际参数形式参数简称形参,并不是实际存在的变量,而是在定义函数名和函数体时使用的参数,目的是接收调用该函数时传入的参数。在调用函数时,传递的实际参数被称为实参,实参将值赋给形参。因而,必须注意实参的个数、类型应与形参一一对应,并且实参必须要有确定的值。实参可以是常量、变量、表达式、函数等,无论实参是何种类型,在函数调用时,它都必须具有确定的值,以便把这些值传递给形参。因此,应先使用赋值、输入等方法使实参在调用函数之前获得确定值。三、函数的参数传递02位置参数Python处理参数的方式要比其他语言更加灵活。其中,使用位置参数就是调用函数时进行参数传递的一种常用方式,实参是通过位置按照次序和形参一一对应的。三、函数的参数传递03关键字参数为了避免位置参数带来的顺序混乱,调用参数时可以指定对应参数的名字,这就是关键字参数。关键字参数可以使用与函数定义时的参数的顺序完全不同的方式进行参数传递。例如:位置参数要求实参和形参必须在次序上一一对应,而关键字参数则不需要在次序上与形参保持一致。上面代码的输出结果如下:三、函数的参数传递04默认值参数在定义形参时,可以为形参指定默认值,从而使函数调用时在缺少该参数的情况下使用该参数指定的默认值。例如:三、函数的参数传递04默认值参数上述调用的输出结果如下:默认值参数在函数定义时就已经计算完成,因此不要把可变的数据类型设置为函数的默认值参数,否则会输出出乎预料的结果。例如:上述调用会输出以下结果,与预期的输出结果并不相同。三、函数的参数传递04默认值参数此外,Python中的所有默认值参数必须位于没有默认值参数的后面。例如:上述代码的运行结果如下:04匿名函数四、匿名函数在Python中,不通过关键字def来声明函数名,而是通过关键字lambda来定义的函数被称为lambda()函数,又称匿名函数。lambda()函数可以接收多个(可以是0个)参数,但只能返回一个表达式的值,lambda()函数是一个函数对象,直接赋值给一个变量。其语法结构如下:lambda<参数>:<表达式>lambda()函数适用于多个参数、一个返回值的情况,函数结果用一个变量来接收。执行lambda()函数的结果与执行普通函数的结果一样,但是lambda()函数比普通函数更简洁,且无须声明函数名。05函数的嵌套与递归五、函数的嵌套与递归01函数嵌套函数嵌套是指在函数体的内部继续进行函数的定义。一般在以下情况使用函数嵌套:封装函数的内部数据,即函数外部无法访问函数的嵌套部分;在函数内部避免重复代码,即坚持DRY(Don'trepeatyourself)原则。例如:五、函数的嵌套与递归02函数递归函数直接或间接调用函数自身的方法被称为递归。递归作为一种算法在程序设计过程中被广泛使用。它通常把一个大型的、复杂的问题转换为一个与原问题相似的、规模较小的问题来求解。一般来说,递归需要设置终止条件和递归条件,终止条件用来终止递归继续进行并返回结果,避免进入无限循环。斐波那契数列是一个函数递归的常见应用,它的前两项为1,从第3项开始,每一项都是其前两项的和。例如,设计函数返回斐波那契数列的第n项:06常用的内置函数六、常用的内置函数01进制转换函数在Python编程中,经常会使用二进制、八进制、十进制、十六进制整数。Python内置了将不同进制的整数转换为对应进制的字符串函数。将整数转换为二进制、八进制、十六进制字符串的函数分别是bin()、oct()、hex)函数。例如:六、常用的内置函数02slice()函数slice()函数是一个切片函数,可以作用于列表、元组等结构,其作用类似于列表中常见的切片操作。其语法结构如下:slice(start,end,step)start,end和step分别定义了slice的起点,终点和步长。在不设置step时,其默认值为1。六、常用的内置函数03divmod()函数divmod(函数是一个整合了整数除法和求余操作的函数。其语法结构如下:aivmod(a,b)函数将返回一个元组,元组的第0个元素为a对b做整数除法的结果,元组的第1个元素为a对b做除法后的余数。例如:六、常用的内置函数04sorted()函数sorted()函数可以对字符串、列表、元组等对象进行排序操作。以列表为例,与list对象的sort方法不同,内置函数sorted()的返回值为重新排列后的新列表,而不是在原来列表的基础上进行操作。其语法结构如下:sorted(iterable,key-None,reverse-True)其中,iterable表示序列,如字符串、列表、元组等;key主要是用来进行比较的元素,只有一个参数,具体函数的参数取自可迭代对象,指定可迭代对象中的一个元素来进行排序;reverse控制排序规则,使用reverse=True为降序,使用reverse=False为升序(默认)。六、常用的内置函数05ord()函数和chr()函数字符在计算机中存储的形式为ASCII值,Python中内置的ord()函数和chr()函数可以将字符与ASCII值相互转换。例如:六、常用的内置函数内置函数round()用于将参数的小数部分通过四舍五入的方式化简。其语法结构如下:round(x,n)其中,参数x表示一个数值或一个数值表达式,可选参数n表示要求小数部分化简到多少位,默认化简到整数部分。例如:06round()函数07变量的作用域七、变量的作用域在Python解释器启动时,会建立一个初始环境,其中有一个内置命名空间,记录所有的标准常量名、标准函数名等。在程序运行时,会建立一个全局命名空间,全局变量就放在这个空间中。每个函数定义自己的命名空间,函数内部定义的变量是局部变量。如果在一个函数中定义一个变量x,在另一个函数中也定义一个变量x,因为是在不同的命名空间定义的,所以两者指代的是不同的变量。可以通过多种方式获取其他命名空间的变量。每个程序在函数外是全局命名空间,全局命名空间中的变量是全局变量。全局变量为定义在函数外,存在于整个程序的变量;局部变量为定义在函数内,存在于该函数内部的变量。七、变量的作用域可

温馨提示

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

评论

0/150

提交评论