Day10函数的应用
1.补充不定长参数(面试题)
补充:不定长参数(面试题)
一个‘’星号“”参数名:(一个是传位置参数)将位置参数作为元组的元素.参数就是一个元组
两个“星号”参数名:(两个*是传关键字参数)将关键字参数,以参数名作为key, 实参作为值,
组合成键值对作为字典的元素
注意: 经常讲args,和kwargs组合在一起使用,但是的要放在的前面
说说args 和*kwargs的却别。
![](https://img.haomeiwen.com/i14187441/8b4761c63684e2bf.png)
2.匿名函数
1.普通函数:
def 函数名(参数列表):
函数体
2.匿名函数:
函数名 = lambda 参数列表:返回值
说明:
函数名 -> 变量名
lambda-> 关键字
参数列表 -> 参数名1,参数名2.....
返回值 -->相当于只有一个return语句的函数体
匿名函数的调用和普通函数一样:函数名(实参列表),也支持位置参数,关键字参数,参数设置默认值
不定长参数
![](https://img.haomeiwen.com/i14187441/c523f511553242f7.png)
![](https://img.haomeiwen.com/i14187441/e47c39b1bb42b89a.png)
3.变量的作用域
1.变量的作用域
变量的作用域指的是变量能够使用的范围
2.全局变量和局部变量
全局变量:声明在函数和类的外面的变量都是全局变量,作用域是从声明开始到整个py文件结束
(任何地方都可以使用)。只要不是在函数和类里面都是全局变量
3.局部变量
声明在函数和类中的变量都是局部变量。声明在函数中的局部变量作用域,从声明开始到函数结束
![](https://img.haomeiwen.com/i14187441/5aad342fc2e58cc2.png)
4.global关键字只能用在函数中
在函数中说明一个变量是全局变量
![](https://img.haomeiwen.com/i14187441/3e2c6da6c0e4cc84.png)
5.nonlocal 关键字
在大局部的小局部中修改大局部变量的值
![](https://img.haomeiwen.com/i14187441/bb0ceea107dbe364.png)
4.函数作为变量
声明函数就是声明一个类型是function的变量,函数名实质就是变量名
1.变量可以给其他变量赋值
![](https://img.haomeiwen.com/i14187441/7080c0e71e648779.png)
![](https://img.haomeiwen.com/i14187441/88124fa296fcf932.png)
2.函数作为列表的元素
![](https://img.haomeiwen.com/i14187441/0f69c5078beb7436.png)
3.将函数作为参数
应用:sort的使用
列表.sort(key=None,reverse=False)从小到大排序
使用sort的时候,可以通过给key赋一个函数变量,来规定列表中的元素按照什么标准来排序。
这儿的函数变量要求有一个参数和一个返回值。参数代表列表中的元素,返回值代表按照那个标准排序
![](https://img.haomeiwen.com/i14187441/539e7ecbed5e4aff.png)
4.将函数作为返回值
![](https://img.haomeiwen.com/i14187441/4b6b30237e6d9d70.png)
5.函数的调用
1.python中函数可以有多个返回值
![](https://img.haomeiwen.com/i14187441/5598c28aa36e6df5.png)
2 .函数的调用过程是一个压栈的过程
每次调用函数的时候,系统都会在内存中(栈,栈区间的内存是系统自动释放和删除)
开辟空间来存储函数执行过程中产生的数据(函数中声明的变量)
当函数调用完成后,这块内存会自动销毁。
6.递归函数(装逼用,了解)
1.什么是递归函数
递归函数: 函数中调用函数本身,这样的函数就是递归函数(自己调自己)
循环能做的事 递归都能做,但是实际上循环能解决的问题,绝对不选递归
2.怎么写递归函数
第一步:确定临界值(循环结束的条件),让函数结束
第二步:找关系,假设函数的功能已经实现,找f(n)和f(n-1)的关系
第三步:根据关系,用f(n-1)实现f(n)的功能
![](https://img.haomeiwen.com/i14187441/2a31670cac5f0715.png)
![](https://img.haomeiwen.com/i14187441/7f3f0594928e2c16.png)
f(n)和f(n-1)的关系:
先打印n颗星
f(n-1)
先f(n-1)
在打印n颗星
![](https://img.haomeiwen.com/i14187441/77b7d148b1b108a9.png)