当前位置:网站首页 > Python编程 > 正文

Python函数递归调用(python中递归调用)




​🕶️师兄简介:机械专业,通过自学成功进入IT领域,求学期间实现经济独立,对自学、兼职、计算机、学习规划等有独到见解!「点击了解更多」


🤖师兄致力解决在大学生活与学习中遇到的各种问题.


🎁 公众号「渣师兄」内回复「渣学」可获得超 5T 的新生见面礼!


🙏找师兄帮忙「无偿」请➕💓:zhaxueit

📓进资源群「每日分享」【免费】(坑位有限)也请➕💓:zhaxueit 并备注「进群」

👀个人主页:@渣师兄 ,欢迎关注、私信师兄!







🐐 登高必自卑,行远必自迩.
🍇 我始终坚信越努力越幸运
⭐️ 那些打不倒我们的终将会让我们变得强大
🍑 希望在编程道路上深耕的小伙伴都会越来越好




函数是什么:函数就是将一段可以独立执行的代码整合到一个整体,并命名,在需要这段代码的位置直接调用这个整体的名称即。

函数作用:所以函数在开发过程中,可以更高效的实现代码重用

image-20211009152945554

读前须知:函数在定义的时候,函数体下面的代码不执行,调用的时候才执行

第一步:定义函数

 
      

第二步:调用函数

函数名(参数)

注意事项:

1:函数必须先定义在调用
2:函数名内的参数可有可无,论情况而定
3:调用函数时,解释器回到定义函数体下方的缩进代码执行,执行完毕后回到调用函数代码处
4:定义函数时,函数体下方缩进的代码不会被执行


读前须知:函数在定义的时候,函数体下面的代码不执行,调用的时候才执行

函数的参数

功能:让函数变得更加灵活,用户可以给出指定数据让函数进行数据处理

语法:

 
      

函数名(实参)

实例:利用函数实现两个数据的相加,这两个数据是用户随意给出的

快速代码体验

image-20211009153051083

读前须知:函数在定义的时候,函数体下面的代码不执行,调用的时候才执行

函数返回值

语法:

 
      

return返回值功能:

实例:用户输入两个数据值,分别为6和8,利用函数求和并且返回和的值

快速代码体验

image-20211009153116770

函数的说明文档

功能:快速查看定义的函数功能以及其程序员给出的解释

语法1(说明文档的书写):

 
      

语法2(函数说明文档的查看):利用

注意事项:

快速代码体验

image-20211009153202547

函数说明文档的高级写法(多行注释中间敲回车):

快速代码体验

image-20211009153215807

读前须知:函数在定义的时候,函数体下面的代码不执行,调用的时候才执行

什么是函数的嵌套?

答:函数的嵌套就是在定义函数下方缩进的代码中调用另外一个函数

函数嵌套功能:简化代码

快速代码体验

image-20211009153237980

函数嵌套例题

例题1:利用函数的嵌套打印多条横杠 ---------------- 用户要求打印几条,就要打印几条

步骤:
第一步,先定义一个函数打印一条横杠
第二步,在定义另外一个函数,要求有形参(形参是用户要求打印的条数)
第三步:利用形参以及循环调用函数打印多条横杠


快速代码演示

image-20211009153254974

例题2:利用函数的嵌套求解三个数据和的平均值

结题步骤:

1,先定义一个函数用来求解三个数据的和
2,在定义一个函数,函数内部嵌套上面定义的函数,用来求解三个数据的平均数
3,最后调用后面的函数来打印三个数据的平均值

快速代码体验

image-20211009153307265

读前须知:函数在定义的时候,函数体下面的代码不执行,调用函数的时候才执行

什么是局部变量以及全局变量呢?

答:局部变量就是定义在函数体内部的变量,函数调用完成后则销毁这个变量,当外界访问此变量时会报错(作用范围是局部)

全局变量就是定义在函数体外部的变量,在任何位置都可以进行访问 (作用范围全局)

快速代码体验(局部变量)

image-20211009153331268

快速代码体验(全局变量)

image-20211009153341992

怎么在函数内部修改全局变量呢?

答:利用 global 在函数内部声明变量为全局变量后,在进行更改即可

快速代码体验:

image-20211009153351596

读前须知:定义函数的时候,函数体下方的代码不执行,调用该函数的时候,函数体下方的代码才执行

函数返回多个返回值的错误代码演示以及正确代码演示

错误代码演示

image-20211009153402255

正确代码演示

image-20211009153411600

函数多个返回值注意事项:

1:函数多个返回值是在return后面写多个数据,而不是在函数内部写多个return

2:return后面书写的多个数据,默认返回格式为元组,当然也可以是列表、字典,需用户手动更改格式

函数参数第一种形式:位置参数

位置参数详解:定义函数的形参以及调用函数的实参他们的意思以及位置是一一对应的

注意事项:形参与实参相互之间传递数据时,形参以及实参的位置和顺序及数量要一致

快速代码体验(name对应TOM,age对应20,gender对应男)

image-20211009153428240

函数参数第二种形式:关键字参数

关键词参数详解:调用函数的实参利用赋值的形式将实参值传递给形参(关键字参数不在乎位置)

注意事项:如果在函数调用的时候,有位置参数,那么位置参数的位置一定要在关键字参数前面

快速代码体验

image-20211009153438023

函数参数第三种形式:缺省参数(默认值参数)

注意事项:

1,如果在定义函数时给形参赋值了默认值,但在调用函数的时候,又给形参赋了另外值,则这个形参值为另外值

2,所有位置参数都要在缺省参数前面(包括函数定义以及调用)

快速代码体验

image-20211009153450140

函数参数第四种形式:不定长参数(包裹位置参数,包裹关键字参数)

应用场景:调用函数时不确定传递参数的个数时候用到的方法(参数个数可以是0也可以是其他数)

包裹位置参数语法:

 
      

快速代码体验(包裹位置参数)

image-20211009153503371

包裹关键字参数语法:

 
      

快速代码体验(包裹关键字参数)

image-20211009153512794

注意事项:

1:无论是包裹位置参数还是包裹关键字参数,都是一个组包的过程
2:包裹位置参数在调用函数打印数据的时候,参数数据是存放在元组中的
3:包裹关键字参数在调用函数打印数据的时候,参数数据是存放在字典中的

元组的拆包

功能:将元组进行拆分,分解成独立的数据(元组内有几个数据,就用几个变量来接收,这就是拆包)

语法:

 
      

快速体验元组的拆包

image-20211009153534176

字典的拆包

字典拆包详解:字典拆包就是将字典内所有键赋值给变量(提取字典中所有的键,有几个键,就要用几个变量接收)

注意事项:字典中有几个键,就用几个变量来接收键

语法:

 
      

快速上机体验

image-20211009153550964

image-20211009153603174

image-20211009153610278

了解应用(id)

在python中,值(数据)是靠引用来传递的

理解引用:计算机内存是用来存放数据的,引用就像是内存的地址门牌号,引用是一个十进制的值(引用粗暴理解就是变量名)

语法:利用 id(变量名)来求引用,引用是一个十进制数

图解:

image-20211009153704353

注意事项:

1,如果两个不可变类型变量的引用(id)是一样的,那么说明这两个变量的值是相同的

2,int是不可变类型!!

不可变类型(int)引用代码体验

image-20211009153722163

可变数据类型(list)引用代码体验

image-20211009153729548

可变数据类型如下:

1,列表
2,字典
3,集合

不可变数据类型如下:

1,整形(int)
2,浮点型(float)
3,字符串
4,元组


可变类型和不可变类型本质就是变量存储的数据发生改变时,内存是否开辟出新的内存空间存储改变后的数据,如果开辟了则是不可变数据类型,没有开辟就是可变数据类型

图解(不可变数据类型):

image-20211009153751316

图解(可变数据类型):

image-20211009153800035

什么是递归?(教程223p)

答:递归特点

1,递归就是,定义函数的时候,函数体内部再调用函数自身(函数内部自己调用自己)
2,递归必须要有出口
3,注意函数返回值的位置是在调用函数时(就相当于把返回值赋值给调用函数语句)

递归应用场景

利用递归实现数据1到6的相加之和

image-20211009153911209

利用递归函数实现1到100累加的和

image-20211009153918309

递归流程

image-20211009153926273

递归没有设置出口的情况:

最大递归深度不同计算机数值不同,一般为(990——1000)

image-20211009153935578

lambda表达式(匿名函数)

功能:简化函数代码

应用场景:定义函数时,函数只有一个返回值且函数体内部只有一行代码,就可用lambda表达式简化代码

语法:
第一种形式:变量名 = lambda 参数的形参 :返回值
第二种形式:( lambda 参数的形参 :返回值) (参数的实参)
第二种形式可直接用print(( lambda 参数的形参 :返回值) (参数的实参))打印


注意事项:

1,同等情况下,书写函数代码比书写lambda表达式占用内存高
2,lambda表达式又叫匿名函数,因此打印返回值时,变量名要加括号例如print(fun())否则打印lambda地址
3,lambda表达式的参数可以是多个,也可以没有
4,lambda表达式只能有一个返回值


快速代码体验(计算两个数据的和)第一种语法:

image-20211009154001553

第二种语法:

image-20211009154008142

第一种:无参数
语法:
快速代码体验

image-20211009154054361

第二种:一个参数
语法:
快速代码体验

image-20211009154104878

第三种:缺省参数
语法:
注意事项:缺省参数 d = 100 无论是在定义lambda表达式,还是调用都要放在参数的最后面赋默认值
快速代码体验


image-20211009154113674

第四种:不定长参数——包裹位置参

应用场景:在不确定参数的个数时使用

语法:

注意事项:包裹位置参数返回值的数据类型为元组

快速代码体验

image-20211009154126590

不定长参数——包裹关键字参数

语法:

注意事项:包裹关键字参数返回值的数据类型为字典

快速代码体验

image-20211009154135127

应用一:带判断的lambda表达式

功能:判断lambda的参数是否满足某些条件,从而返回一个值

语法:

其中 形参1 if 形参1 > 形参2 else 形参2 是三目运算符,意思为如果形参1大于形参2则返回值为形参1,反之返回形参2

实例:判断两个数据a,b的大小,a大于b返回值为a,a小于b返回值为b

image-20211009154151562

应用二:列表内嵌套字典,要求在列表内按照字典的某个key对应的value进行排序

注意事项:

1:列表排序用sort方法,当列表内嵌套字典时sort有两个值,一个是key的值,一个是reverse的值

2:列表嵌套字典时sort的key值表示按照字典哪个key对应的value进行排列

快速代码体验

image-20211009154203771

高阶函数的定义

高阶函数就是把一个函数的函数名(通常是abs函数与round函数)作为另外一个函数的实参传入,这就叫做高阶函数

abs()函数与 round()函数

abs()函数详解

功能:绝对值函数,就是将abs(数字数据)括号里面的数字数据进行绝对值化

语法:

快速代码体验

image-20211009154341168

round()函数详解

功能:四舍五入函数,就是将folat数据进行四舍五入

语法:

快速代码体验

image-20211009154354792

高阶函数体验

高阶函数:将一个函数的函数名作为另外一个函数的实参传入

功能:让代码更加简洁,函数更加灵活

快速代码体验(将abs()函数的abs函数名传入到fn()函数中)

image-20211009154405120

一:map(func,lst)函数

功能:map(func,lst)函数是将传入的功能函数func作用在lst列表的每一个元素中,并返回python2/列表,python/迭代器(func和lst只是序列名,func代表函数名,lst代表列表名)

语法:

注意事项:map函数的返回值在python3是迭代器,因此查看结果要将迭代器转换为列表

实例:利用map()函数将列表list1 = [1,2,4,8]中的每一个数据加平方

image-20211009154418839

二:reduce(func,lst)函数

功能:将函数名为func的函数作用在lst整个列表序列中,实现列表中所有数据的累计计算处理(通常是所有数据的相加、相乘等)

语法:,其中调用reduce函数要先导入functools模块

注意事项:

实例:将列表list1 = [1,5,6,8]中的所有数据进行相加或相乘

image-20211009154433998

三:filter(func,lst)过滤函数

功能:将func函数的功能作用在lst这个序列的所有元素中,func函数通常是过滤功能。

语法:

注意事项:

实例:过滤列表序列list1 = [1,2,3,4,5,6,7,8,9]的数据,过滤条件为可以被2整除的数据

image-20211009154450068

总结注意事项:

map函数与reduce函数区别:

1:调用map函数返回值是迭代器,而reduce是一个数值
2:map函数可直接调用,reduce调用前需要导入functools模块
3:map函数的功能函数只有一个参数,而reduce的功能函数有两个参数
4:map函数每次对序列中一个数据进行处理,而reduce是两个数据,因此reduce有两个参数


未完待续…

到此这篇Python函数递归调用(python中递归调用)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • python中将list中的字符串转换成数字(pythonlist转换为字符串)2025-06-10 07:09:05
  • python函数中用于获取用户输入值(python获取用户输入的一个字符串)2025-06-10 07:09:05
  • python函数图像绘制(python函数画图)2025-06-10 07:09:05
  • python函数可以没有返回值吗(python函数没有返回值会返回什么)2025-06-10 07:09:05
  • 将py打包成exe(将python打包成exe)2025-06-10 07:09:05
  • python函数中用于获取用户输入值的函数(python中,用于获取用户输入的函数)2025-06-10 07:09:05
  • python删除venv虚拟环境(删除pytorch虚拟环境)2025-06-10 07:09:05
  • py文件怎么执行手机(python手机运行py文件)2025-06-10 07:09:05
  • 安装nodesass报错python(npm安装node-sass报错)2025-06-10 07:09:05
  • pillow库的主要作用(python的pillow库)2025-06-10 07:09:05
  • 全屏图片