1,生成器
生成器的本质就是迭代器(_next_())
生成器的特点和迭代器一样,取值和迭代一样
生成器一般由生成器函数或者生成器表达式来创建
其实就是手写的迭代器
2,生成器函数
和普通的函数没有区别,里面的yield函数就是生成器函数
生成器函数在执行的时候,默认不会执行函数体,返回生成器
通过生成器的_next_()分段来执行这个函数,send()给上一个yield传值,
不能再开头(没有上一个yield)
3.推导式:
就是是用一句话生成一个列表
1.列表推导式[结果 for循环 条件筛选]
2,字典推导式{k:v for循环 条件筛选}
3,集合推导式{k:for循环 条件}
4.生成器表达式
(结果 for循环 条件)
特点:
1.惰性机制
2.只能向前
3.节省内存(鸡蛋)
2,yield和return作用一样都可以返回函数
yield的for循环
3,
send和_next_()的区别:
1.send和next都是让生成器向下一次走
2,send可以给上一个yield的位置传递值,不能给最后一个传值
4.迭代模仿for循环
6.枚举
输出:
(0, '容妃')
(1, '贵妃')
(2, '爱妃')
7 .主要内容回顾 1,生成器 2,推导式 3,生成器表达式 4.生成器函数 1.在函数内部有个yield 2,在这个时候我们执行这个函数,这个时候获取的是生成器 3._next_()可以触发生成器的执行,执行下一个yield 4.send().可以给上一个yield传值,执行到下一个yield.不能再开头和结尾 特点:惰性机制,只能向前,节省内存 2.推导式 1.列表推导式: [结果 for 判断] 2.字典推导式 {k:v for 判断} 3.集合推导式 {k for 判断} 4.生成器表达式 (结果 for 判断) 元祖是没有表达式的,因为元祖是不可 变得 3.内置函数 3.6.2的版本有68个内置函数