生成器

生成器 #

iterable 可迭代的 #

Everything you can use “for… in…” on is an iterable; lists, strings, files…

iterable 包括:

  • list
  • tuple
  • string
  • dictionary
  • file
  • enumerate object

iterator 迭代器 #

  • iter() 函数用来生成迭代器。
  • iter(object[, sentinel])
    • object:支持迭代的集合对象
    • sentinel
      • 如果传递了 sentinel,则 object 必须是一个可调用的对象(如函数),此时 iter 创建了一个迭代器对象
      • 每次调用这个迭代器对象的 __next__() 方法时,都会调用 object

迭代器只能迭代一次

a kind of iterable you can only iterate over once.

generator #

Generators are iterators, a kind of iterable you can only iterate over once. Generators do not store all the values in memory, they generate the values on the fly.

带有 yield 的函数在 Python 中被称之为 generator(生成器)函数

yield #

  1. 执行带有 yield 的函数返回一个 generator(生成器)
  2. next(g) 开始执行这个 generator,执行完 yield 语句,就返回
  3. 第二次 next(g)yield 语句后开始执行(比如 yield 语句的赋值操作),再遇到 yield 语句也是一样,执行完就返回

next #

send #

close #

参考:


本文访问量

本站总访问量

本站总访客数