1.函数的调用
过程:
回到函数声明的位置
用实参给形参赋值(传参)
执行函数体
获取返回值
回到函数调用的位置
压栈:
当调用函数的时候,系统会自动在栈区间开辟空间保存函数调用过程
中产生的数据(形参,函数中声明的变量)
2.返回值
有没有遇到return,遇到了函数的返回值就是return后面的值
没有返回值就是none
函数调用表达式的结果就是函数的返回值
def func(a:int) -> int: 对返回值进行说明
3.函数的参数
位置参数和关键字参数:位置参数要在关键字参数的前面
参数的默认值:参数名 = 值
不定长参数:*参数名; **参数名
参数类型说明:参数名:类型名
对函数的返回值进行说明 def 函数名(参数列表) -> 返回值类型:
4.匿名
函数名 = lambda 参数列表:返回值
1.变量的作用域
变量在程序中能够使用的范围
2.全局变量
在python中声明在函数或者类的外部的变量都是全局变量
作用域:从声明开始到整个py文件结束,任何位置都可以使用
(作用域:从声明开始到文件结束)
3.局部变量
声明在函数或者类的里面的变量都是局部变量
局部变量的作用域:从声明开始到函数结束,任何位置都可以使用
global关键字只能在函数中使用,作用是在函数中声明一个全局变量
语法:
global 变量名
变量名 = 值
nonlocal 关键字只能在函数中使用
当需要在局部的局部中修改局部变量的值,就使用nonlocal
语法:
nonlocal 变量名
变量名 = 值
python中,声明函数其实就是声明一个类型是function的变量
函数名就是变量名
函数名作为变量除了用来调用函数获取返回值,普通变量能做的他都能做
作为函数的参数
将函数1作为实参,传递给函数2,这儿的函数2就是一个高阶函数(实参高阶函数
变量作为函数的返回值
返回值是函数的函数,也叫高阶函数(返回高阶函数)
1.什么是迭代器(iter)
迭代器是python中的容器类的数据类型,可以同时存储多个数
取迭代器中的数据只能一个一个的取,而且取出来的数据,在迭代器就不存在了
2.迭代器中数据的来源
a.将其他序列转换成迭代器
b.使用生成式、生成器去产生数据
next(迭代器)/迭代器.next() - 取出迭代器中第一个元素(已经取出来的元素再也回不到迭代器中了)
当迭代器中没有元素了, 再去取值,会报错(stopiteration异常)
生成器就是迭代器;迭代器不一定是生成器
生成器就是带有yield关键字的函数的结果
调用带有yield关键字的函数,拿到的结果就是一个生成器。
生成器中的元素就是yield关键字后边的值
只要函数中有yield关键字,调用函数不会再执行函数体获取返回值
而是创建一个生成器
当获取生成器的元素的时候,才会执行函数的函数体,执行到yield语句为止
并且将yield后边的值作为结果返回,并且保存当前执行的位置
获取下一个元素的时候,就从上次结束的位置接着往下去执行函数,直到函数结束
或者遇到yield为止,如果遇到yield就将yield后面的值作为结果返回,并且保存当前
执行的位置,如果函数结束了,就出现stopiteration异常
生成器对应的函数,执行完成遇到yield的次数,决定了生成器能产生的数据的个数
网友评论