49生成器
闭包/全局变量让函数在退出后还能保留状态全局变量污染空间 闭包较复杂 选生成器
定义:在函数中用yield表达式来代替函数中return语句
实现生成器的另一种方法:直接使用生成器表达式
For语句功能:每次在可迭代对象中获取一个数据
(Counter)生成器不像列表元组等可迭代对象,而看作是制作机器作用即每次调用时提供一个数据,并且会记住当时的状态,而列表元组这些则是容器,存放早已备好的所有数据
生成器可以看作是一种特殊的迭代器 首先不走回头路 第二支持next()函数
生成器每调用一次获取一结果的特性,使生成器对象无法使用下标索引这种随机访问的方式
生成器表达式:利用推导的形式获得生成器的方法
与生成器特性不同,列表推导式会一下将所有的数据生产出来并放到列表中
分别用闭包、生成器 来求斐波那契数列
由于函数中没有设置结束条件 用for语句迭代他直到强制退出
50递归:函数调用自身的过程
函数之间是可以相互调用的
要让递归正常工作,必须要有一个结束条件,并且每次调用都会向着该结束条件推进
用迭代和递归来实现同一个任务:
求一个数的阶乘
定义一个递归函数,参数就是每次要运算的这个数值,接着让参数每次调用时都递减一下
斐波那契数列
递归存在效率问题,每一次调用递归函数 它并不会立刻返回,而是要等到最底层的那个函数返回,再一层一层往上走
迭代就是一瞬间的事