一、函数的返回值
返回值就是函数返回给函数调用者的值(概念)
返回值就是return后面的值(语法)
返回值就是函数调用表达式的值(获取返回值)
1.、return
return
是关键字,只能出现在函数体中
(1)return的作用
- 结束函数:执行函数体的时候,一旦遇到return函数直接结束
- 将数据返回给函数调用者(将函数内部的数据传递到函数外部):
return 需要返回的数据
看一个函数的返回值是什么,就看执行函数的过程中有没有遇到return,如果遇到return,return后面的值就是函数的返回值。
如果执行完函数会产生新的数据,那么产生的新数据就会返回,产生几个返回几个。return 返回值1,返回值2
(2)函数调用过程
回到函数调用的位置;
传参,用参数给形参赋值(保证每个参数都有值);
执行函数体;
执行完函数体,确定函数的返回值
函数结束:a.执行完函数体的最后一条语句;b.执行过程中遇到return
怎么确定返回值:就看执行韩式的过程中有没有遇到return,如果遇到return,return后面的值>就是返回值
回到函数调用位置(这个时候函数调用表达式的值才是函数的返回值),接着往后执行
(3)函数调用过程的内存变化
函数调用的过程其实就是一个压栈的过程:每次调用时系统都会自动的在内存中专门为这个函数开辟一个内存空间,用来保存在函数中声明的变量(形参也是声明在函数中的变量),当函数调用结束,这个内存区间自动释放。
二、匿名函数
1.匿名函数的本质还是函数,普通函数中除了声明的语法其他都适用于匿名函数
lambda 参数列表:返回值
lambda
— 关键字,固定写法
参数列表
— 形参列表,以'参数名1,参数名2,...''
返回值
— 任何有结果的表达式都可以
注意:匿名函数的函数体只有一条语句,而且这条语句的结果就是函数的返回值(不需要return)
2.什么时候使用匿名函数
- 函数的功能一行代码就可以实现
- 函数的功能不会重复使用
python中的三目运算符
- C语言 — 条件语句?值1:值2 — 如果条件语句的掘港为True,整个表达式的结果是值1,否则是值2
- python — 值1 if 条件语句 else 值2 — 如果条件语句的结果为True,整个表达式的结果是值1,否则是值2
三、变量的作用域
1.什么是作用域
声明完变量后,这个变量能够使用的范围就是变量的作用域
2.全局变量和局部变量
(1)全局变量
- 声明在函数或者类型外面的变量都是全局变量
- 全局变量的作用域:从声明开始到整个文件结束
(2)局部变量
- 声明在函数中的变量就是局部变量
- 局部变量的作用域:从声明开始到整个函数结束
3. global 和 nonlocal
这两个关键字只能在函数体中使用
(1)global
-
global
:在函数中声明一个全局变量(去修改一个全局变量的值) global 变量名
(2)nonlocal
-
nonlocal
:在局部的局部中修改局部变量的值 nonlocal 变量名
四、递归函数
在函数中调用函数本生,这样的函数就是递归函数
循环能做的事情递归都可以
1.怎么写递归函数
- 第一步:声明函数
- 第二步:找临界点(和普通函数一样)
- 第三步:找关系; 假设函数的功能已经实现了,找
f(n)
与f(n-1)
的关系 - 第四步:通过关系使用
f(n-1)
去实现f(n)
的功能
总结:通过for或者while循环能做到的事情就不要用递归