函数进阶

返回值

从函数里面传递到函数外的数据

怎么返回数据

return 关键字后面表达式的值

  • 语法:

​ return 参数1,参数2,...

  • 说明:

​ return,只能出现在函数中

​ 将数据从函数内容从函数内部扔到函数的外部

​ 结束函数(执行函数的时候只要遇到return函数直接结束)

  • 表达式:可以一个都没有,可以有一个,也可以有多个(本质返回的是元组)。没有返回值返回None

怎么使用返回的数据

返回值就是函数调用表达式的值

普通数据能做的事,函数表达式也能做。

函数调用过程

第一步:回到函数定义的位置

第二步:传参(实参给形参赋值)

第三步:执行函数体

第四步:执行完函数体,确定返回值。(a.执行完函数体中的最后一条语句 b.遇到return),确定函数返回值(执行函数时有没有遇到return,遇到则是return后的值,没有return返回值为None。

第五步:回到函数调用的位置往后执行(这个时候函数调用表达式的值就是函数的返回值)

全局变量和局部变量

所有的数据都在堆里,保存地址的变量在栈里面

堆(存数据)

栈(存地址、函数的栈)

  • 函数调用过程中内存的变化

每次在函数调用的时候,系统会自动为这个函数创建一个独立的栈空间,用来保存函数运行过程中产生的数据(函数的参数;函数的参数声明的变量);当函数调用结束后这个栈区间会自动销毁。(压栈)

1)全局变量

没有定义在函数里面或者类里面的变量就是全局变量。

作用域:从定义开始到程序结束的任何位置都可以使用

循环里面的声明的变量也是全局变量

2)局部变量

定义在函数中变量就是局部变量

作用域:从定义开始到函数结束的任何位置都可以使用

形参是局部变量,定义函数时给形参赋的默认值,其实是保存在堆里面。

3)global和nonlocal

  • global:在函数中声明全局变量
  • nonlocal:在局部的局部中去修改局部变量的值,使用nonlocal。

匿名函数

什么是匿名函数?

匿名函数本质还是函数,普通函数中除了定义的语法,其他全部适用于匿名函数。

lambda 形参列表:返回值

用于一些简单的函数

说明:

lambda - 关键字,固定写法

形参列表 - 形参1,形参2,...
  		-		固定写法

递归

在函数的内部调用函数本身(自己调用自己)

第一步:确定临界值(在临界值的位置结束函数)

第二步:找关系(找当次循环(f(n))和上一次循环(f(n-1))之间的关系

第三步:假设函数功能已经实现,用f(n-1)去实现f(n)的功能

函数就是变量

python中定义函数其实就是定义一个类型是function的变量,函数名就是变量名。

高阶函数

实参高阶函数

一个函数的参数是函数,就是实参高阶函数。

系统提供的常见的实参高阶函数

max、min、sorted:都是实参高阶函数,参数key需要一个函数;被传入的函数需要一个参数和一个返回值,这个参数指向的是序列中的元素,返回值是要比较的对象。

map:将序列中所有的元素按照函数指定的规则进行转换,返回的是转换后的序列。

reduce(函数,序列) - 对序列中的元素按照函数提供的功能进行累积的操作。函数需要两个参数只想前两个元素,需要一个返回值。

返回值高阶函数

返回值高阶函数:返回值是函数的函数

posted @ 2020-07-02 20:18  侬&码  阅读(123)  评论(0编辑  收藏  举报