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]

py