python基础知识
for循环本质
- 本质:
 for循环本质上就是一个函数
- eg:
  
迭代取值与索引取值对比
- 迭代取值
 优点:不依赖于索引的一种通用取值方式
 缺点:取值的顺序永远都是固定的从左往右,无法重复获取值
- 索引取值
 优点:可以重复取值
 缺点:需要提供有序的容器类型才可以取值(不是一种通用的方式)
  
生成器对象
- 
定义: 
 生成器其实就是自定义迭代器,定义阶段就是一个普通函数
- 
eg 
  
(当函数体内含有yield关键字,那么在第一次调用函数的时候,并不会执行函数体代码,而是将函数变成了生成器(迭代器))
调用函数:不执行函数体代码 而是转换为生成器(迭代器)
res = my_ge()
ret = res.next()  # 每执行一个__next__代码往下运行到yield停止 返回后面的数据
print(ret)
ret = res.next()  # 再次执行__next__接着上次停止的地方继续往后 遇到yield再停止
print(ret)
小题目
- 自定义range功能
  
 多写多练
yield传值
并不会执行代码,而是转换成生成器

yield与return对比
- yield
 1、可以当返回值(支持多个元素并组织成元组)
 2、函数体代码在遇见yield是会停顿并不会结束
 3、yield可以将函数变成生成器,也支持外界传值
- return
 1、可以当返回值(支持多个元素并组织成元组)
 2、函数替代码遇见return会直接结束
  
生成器表达式
- 1、生成器表达式内部的代码只有在迭代取值时才会执行
 2、为了节省空间
- eg
  
 最后打印出 [20, 21, 22, 23]


 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号