Day10总结-2019/08/02

一.匿名函数

1.本质还是函数,只是没有函数的声明语法,语法:

lambda 参数列表: 返回值

二.变量的作用域

作用域:就是能在程序中使用的范围。

1.全局变量

不是声明在函数或者类里面的变量,能在声明开始到文件结束的任何位置使用。

2.局部变量

声明在函数里面的变量,能在函数里面从声明开始到函数结束间的任何位置使用。

3.global

global是只能在函数中使用的一个关键字。他能声明一个全局变量。用法:
global 变量
变量 = 值

4.nonlocal

nonlocal也是只能在函数中使用的一个关键字。在局部的局部中去修改局部的值。用法:
nonlocal 变量
变量 = 值

三.递归函数

函数递归就是在函数体中调用函数本身达到循环的效果。但是,能用循环就不用递归。
熟记递归函数三步骤,多写,多做题。

第一步:找临界值(循环结束的条件),在这儿需要结束函数
第二步:找关系 - 找f(n)和f(n-1)的关系(找当次循环和上次循环的关系)
第三步:假设函数的功能已经实现,会根据关系用f(n-1)取实现f(n)的功能

四.迭代器、生成器

1.迭代器iter

迭代器也是一个容器,可由其它序列转换过来,生成器也是它的一种。
用法:变量名 = iter(序列)

2.获取迭代器的元素

1)获取单个元素:next(迭代器)、迭代器.__next__() -> 获取迭代器中的第一个元素,如果迭代器为空,用next获取元素的时候会报错。
2)遍历:
for 遍历 in 迭代器:
pass

3.生成器

1.它是迭代器的一种,只要调用一个有yield这个关键字的函数,就可以得到一个迭代器。
2.如果一个函数中有yield关键字,如果调用它:
a.不会执行函数体
b.函数调用表达式的值是一个生成器而不是返回值
3.一个生成器有多少值,就看调用对应的函数的函数体是会遇到几次yield。yield后面的值就是生成器遇到它时产生的值。
4.每次获取生成器中的元素的时候,先去执行函数体,直到遇到yield或者函数结束为止,并且将yield后面的值作为获取元素的结果
并且保留结束的位置,下次获取下一个值的时候,从上次结束的位置接着执行函数体。直到遇到yield。
如果从开始执行到函数结束都没有遇到yield,就会报错。

你可能感兴趣的:(Day10总结-2019/08/02)