单元开篇:
函数定义和使用
1、函数的定义和调用。
2、函数的参数传递
3、局部变量和全局变量
4、lambda函数(匿名函数)
5、函数递归
函数相关的保留字
def 声明函数
return
global(全局变量)
lambda 匿名函数
![](https://img-blog.csdnimg.cn/2020031121274151.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
python中函数没有写特定的返回值类型
python函数定义的注意事项:
1、默认情况下,函数不需要类型声明。
2、默认情况下,函数返回值不需要类型声明。
3、参数和返回值可以为0个或者多个。
在c、c++语言中限定函数的返回值,是为了限定函数对内存的使用。
![](https://img-blog.csdnimg.cn/20200311213105493.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20200311213511190.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
函数可以没有参数,也可以没有,但是必须保留括号
Python函数参数传递的4个方面
- 位置传递和名称传递
- 可选参数传递
- 可变参数传递:元祖形式和字典形式
- 多个返回值
![](https://img-blog.csdnimg.cn/20200311213646861.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20200311213815718.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20200311213902383.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
// 整除符号
![](https://img-blog.csdnimg.cn/20200311214047176.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
可变参数:函数可以接受不确定总数的参数变量。
*b 这样是元祖形式
**d 这样写是字典形式,里面是一个一个键值对。
![](https://img-blog.csdnimg.cn/20200311214145709.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
这时b是一个元祖 b = (3,5,8)
![](https://img-blog.csdnimg.cn/20200311214345741.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
函数参数是**d 那么 d={a:3,b:4,c:8}是一个字典,里面是键值对。
函数可返回0个或者多个结果
- return保留字用来传递返回值,或表示函数结束。
- 函数可以有返回值,也可以没有,可以有return,也可以没有。
- return可以传递0个返回值,也可以传递任意多个返回值。
![](https://img-blog.csdnimg.cn/20200311214602720.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
当函数返回多个值时,函数会默认将返回的多个值组成一个元祖再返回。
![](https://img-blog.csdnimg.cn/20200311215002699.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20200311215033765.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20200311215115501.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20200311215241513.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
在函数中并没有声明ls,在这种情况下,函数默认会到全局变量中去寻找ls
这是因为python语言在调用函数时,它会将组合数据类型的引用放到函数的调用中,实际上变量ls的引用会关联到全局变量上。
![](https://img-blog.csdnimg.cn/20200311215746847.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
使用规律总结:
- 基本数据类型,无论是否重名,局部变量与全局变量不同。
- 可以通过global保留字在函数内部声明全局变量
- 组合数据类型,如果局部变量没有真实创建,则是全局变量。
lambda函数
- lambda函数返回函数名作为结果
- lambda函数是一种匿名函数,机没有名字的函数。
- 使用lambda关键字定义,函数名是返回结果。
- lambda函数用于定义简单的,能够在一行内表示的函数。
![](https://img-blog.csdnimg.cn/20200311220039647.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20200311220139331.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
递归的定义:
![](https://img-blog.csdnimg.cn/20200311220235723.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20200311220335220.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20200311220424467.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
将字符串的第一个字符放到最后,从第二个字符开始继续递归。
![](https://img-blog.csdnimg.cn/20200311220654756.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20200311220811326.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20200311220917853.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Vzc3RtaXJhY2xl,size_16,color_FFFFFF,t_70)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)