在python中有三种方式来获取生成器
1.通过生成器函数
2.通过各种推导式来实现生成器
3.通过数据的转换也可以获取生成器
生成器表达式和列表推导式的区别:
1.列表推导式比较耗内存.一次性加载;生成器表达式几乎不占内存,使用的时候才分配和使用内存.
2.得到的值不一样,列表推导式得到的是一个列表,生成器表达式获取的是一个生成器.
字典推导式:
推导出来的是字典
集合推导式:
集合推导式可以帮我们直接生成一个集合,集合的特点:无序,不重复,所以集合推导式自带去重功能
总结
推导式有:列表推导式,字典推导式,集合推导式, 没有元祖推导式!!!!!!!
生成器表达方式:(结果for 变量名 in 可迭代对象 if 条件筛选)
神撑起表达式可以直接获取到生成器对象,生成器对象可以直接进行for循环.生成器具有惰性机制
函数名使用及第一类对象
函数名是一个变量,但它是一个特殊的变量.于括号配合可以执行函数的变量
1.函数名的内存地址
2.函数名可以赋值给其他变量
3.函数名可以当做容器类的元素
4.函数名可以当做函数的参数
5函数名可以作为函数的返回值
闭包:
闭包就是内层函数对外层函数(非全局)的 变量的引用,就叫做闭包!
使用 函数名.__closure__返回非None就是闭包,返回None就不是闭包
闭包的作用就是让一二变量能够常驻内存,供后面的程序使用
迭代器:
遵守可迭代协议,具有 __inte__方法的
创建一个迭代器 ==可迭代对象.__inte__()
使用迭代器 == 迭代器.__next__()
节省内存;惰性机制;一次性的,就是不能返回只能向下执行
推荐的方法:
不要看视频,看总结笔记,回忆,再自己写一遍,
抄代码,电脑上5遍,纸上再写5遍,要从临时记忆转到永久记忆,这样在以后有灵感的时候不会因为一激动就写不出逻辑严谨的代码了