生成器 #
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 #
- 执行带有
yield
的函数返回一个generator
(生成器) next(g)
开始执行这个generator
,执行完yield
语句,就返回- 第二次
next(g)
从yield
语句后开始执行(比如yield
语句的赋值操作),再遇到yield
语句也是一样,执行完就返回
next #
send #
close #
参考:
叶王 © 2013-2024 版权所有。如果本文档对你有所帮助,可以请作者喝饮料。